【问题标题】:Get all Select Elements in a Form by referencing $(this) instead of $("form select")通过引用 $(this) 而不是 $("form select") 获取表单中的所有 Select 元素
【发布时间】:2010-03-26 10:24:32
【问题描述】:

我目前正在获取表单中存在的所有 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)
}

谢谢

戴夫

【问题讨论】:

    标签: jquery jquery-selectors jquery-traversing


    【解决方案1】:

    使用.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)
    }
    

    【讨论】:

      【解决方案2】:
      $("form").submit(function(event) {
          // gather data
          var data = GetSelectData($("select", this));
      
          // ...
      });
      

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

      【讨论】:

        猜你喜欢
        • 2023-04-07
        • 1970-01-01
        • 2015-08-29
        • 2013-09-15
        • 1970-01-01
        • 2019-05-28
        • 1970-01-01
        • 2016-06-06
        • 2012-08-06
        相关资源
        最近更新 更多