2010-03-05 33 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)); 

    // ... 
}); 

始終指定的第二個參數時可能的,這指定上下文/範圍,其中選擇器將實際搜索。

相關問題