2010-03-05 30 views
0

目前我得到的所有选择要素中存在的形式有以下:

$("form").submit(function(event) 
{ 
    // gather data 
    var data = GetSelectData($("form select")); 

    // do submit 
    $.post($(this).attr("action"), data, ..etc) 
}); 

除了传递$("form select")的,是有办法,我可以这样说

$(this).children('select') // this doesn't work, btw 

让所有存在提交事件被用于执行形式的范围内的选择元素?

这将允许我的代码减少到下面,将所有的功能整合到一个共同的功能:

$("form").submit(function(event) 
{ 
    GatherDataAndSubmit($(this)); 
}); 

function GatherDataAndSubmit(obj) 
{ 
    var data = GetSelectData(obj.children('select')); 

    $.post(obj.attr("action"), data, ..etc) 
} 

感谢

戴夫

回答

5

使用.find()

尝试

var data = GetSelectData(obj.find('select')); 

的.find()和。儿童()方法 是相似的,不同之处在于后者 只行进单电平向下 DOM树。

$("form").submit(function(event) 
{ 
    GatherDataAndSubmit($(this)); 
}); 

function GatherDataAndSubmit(obj) 
{ 
    var data = GetSelectData(obj.find('select')); 

    $.post(obj.attr("action"), data, ..etc) 
} 
1
$("form").submit(function(event) { 
    // gather data 
    var data = GetSelectData($("select", this)); 

    // ... 
}); 

始终指定的第二个参数时可能的,这指定上下文/范围,其中选择器将实际搜索。

相关问题