0

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

$("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)
}

谢谢

戴夫

4

2 回答 2

5

使用.find()

尝试

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

.find() 和 .children() 方法是相似的,只是后者只沿着 DOM 树向下移动一层。

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

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

    $.post(obj.attr("action"), data, ..etc)
}
于 2010-03-05T11:06:42.460 回答
1
$("form").submit(function(event) {
    // gather data
    var data = GetSelectData($("select", this));

    // ...
});

如果可能,请始终指定第二个参数,这指定了选择器实际搜索的上下文/范围。

于 2010-03-05T11:39:13.310 回答