通过引用$(this)而不是$("表单选择")来获取表单中的所有选择元素

Dav*_*Dev 0 jquery jquery-selectors jquery-traversing

我目前正在获取表单中存在的所有Select元素,其中包含以下内容:

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

    // do submit
    $.post($(this).attr("action"), data, ..etc)
});
Run Code Online (Sandbox Code Playgroud)

而不是传入$("form select"),有没有办法可以说出类似的东西

$(this).children('select') // this doesn't work, btw
Run Code Online (Sandbox Code Playgroud)

获取提交事件正在执行的表单上下文中存在的所有选择元素?

这将允许我将我的代码减少到以下,将所有功能转移到一个通用功能:

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

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

    $.post(obj.attr("action"), data, ..etc)
}
Run Code Online (Sandbox Code Playgroud)

谢谢

戴夫

rah*_*hul 5

使用.find()

尝试

var data = GetSelectData(obj.find('select'));
Run Code Online (Sandbox Code Playgroud)

.find()和.children()方法类似,只是后者只沿DOM树向下移动一个级别.

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

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

    $.post(obj.attr("action"), data, ..etc)
}
Run Code Online (Sandbox Code Playgroud)