【问题标题】:Multiple Parameters for jQuery selector?jQuery选择器的多个参数?
【发布时间】:2010-04-20 01:47:19
【问题描述】:

我只是在看 jQueryUI 按钮插件并注意到这一点

$("button, input:submit, a", ".demo").button();

我从来没有见过这样的事情。这就像一个 jQuery 选择器中的多个选择吗?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    第二个参数(在你的例子中是".demo")是context,基本上你的选择器被限制为只匹配一个确定的context的后代:

    $(expr, context)
    

    就相当于使用find方法:

    $(context).find(expr)
    

    查看jQuery function的文档:

    选择器上下文

    默认情况下,选择器执行它们的 从 DOM 开始搜索 文档根目录。然而,一个 可以为 使用可选的第二个搜索 $() 函数的参数。为了 例如,如果在回调函数中 我们希望搜索一个元素, 我们可以限制该搜索:

    $('div.foo').click(function() {
      $('span', this).addClass('bar');
      // it will find span elements that are
      // descendants of the clicked element (this)
    });
    

    另请注意,您发布的选择器 "button, input:submit, a" 称为 Multiple Selector,您可以在此处指定任意数量的选择器以组合成一个结果,只需用逗号分隔它们即可。

    【讨论】:

    • 酷从来不知道。当我想限制说像一个类部门这样它就不会搜索整个页面时,我只是做了类似 $('#id .class')
    • 这确实与您在查看源代码时所想的相反。我希望第一个 arg 是超类,然后是缩小范围的子类。嗯嗯。
    • 如果我定义一个上下文,浏览器会更快吗?
    【解决方案2】:

    实际上要为 jQuery 选择器提供多个不同的参数,只需给选择器一个包含所有参数的数组,例如

    $([sel1, sel2, sel3, obj1, obj2, obj3]).on("click", function() {
        alert("clicked!");
    });
    

    【讨论】:

      猜你喜欢
      • 2011-07-14
      • 2011-03-30
      • 2012-02-10
      • 2011-10-31
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      相关资源
      最近更新 更多