jQuery中有多个选择器链接?

时间:2011-04-20 21:24:02

标签: jquery jquery-selectors

通常当我使用类作为选择器时,我会尝试使用“id”选择器,因此它不会搜索整个页面,而只搜索类所在的区域。

但是我有一个包含代码的局部视图。这个局部视图(公共代码)围绕一个表单标记。

我有:

<form id="Create">
// load common code in from partial view
</form>

<form id="Edit">
// load common code in from partial view
</form>

现在在这个通用代码中我需要将一个插件附加到多个字段,所以我会这样做

$('#Create .myClass').plugin({ options here});

$('#Edit .myClass').plugin({options here});

所以这几乎是相同的代码。我想知道是否有办法让它找到任何一个id?

修改

当我为选择器添加变量时,我遇到了问题

    my.selectors = 
    {
        A: '#Create',
        B: '#Edit',
        Plugin: ' .Plugin' 
    };

 $(selector.A+ selectors.Plugin, selector.B+ selectors.Plugin)

似乎没有跑。

7 个答案:

答案 0 :(得分:86)

您可以将多个选择器与逗号结合使用:

$('#Create .myClass,#Edit .myClass').plugin({options here});

或者,如果您要使用它们,可以在所有表​​单元素中添加一个类,然后在该类中进行搜索。这并没有让你获得限制搜索的速度节省,但老实说,如果我是你,我也不会过分担心。浏览器做了许多花哨的事情来优化背后的常见操作 - 简单的类选择器可能更快。

答案 1 :(得分:39)

$("#Create").find(".myClass").add("#Edit .myClass").plugin({});

使用$.fn.add连接两组。

答案 2 :(得分:10)

你应该可以使用:

$('#Edit.myClass, #Create.myClass').plugin({options here});

jQuery | Multiple Selectors

答案 3 :(得分:9)

我认为通过这种方式可能会看到更好的性能:

$("#Create, #Edit").find(".myClass").plugin(){
    // Options
});

答案 4 :(得分:6)

像:

$('#Create .myClass, #Edit .myClass').plugin({ 
    options: here
});
  

您可以指定任意数量的   选择器组合成一个单一的   结果。这个多重表达   组合器是一种有效的方法   选择不同的元素。命令   返回的DOM元素   jQuery对象可能不一样,如   它们将按文件顺序排列。一个   该组合器的替代品是   .add()方法。

答案 5 :(得分:0)

这里已经有很好的答案,但在其他一些情况下(特别是这不是),使用map可能是“唯一”的解决方案。

特别是当我们想要使用regexps时,除了标准的那些。

对于这种情况,它看起来像这样:

 $('.myClass').filter(function(index, elem) {
    var jElem = $(elem);

    return jElem.closest('#Create').length > 0 || 
           jElem.closest('#Edit').length > 0;

}).plugin(...);

正如我之前所说,这里的解决方案可能毫无用处,但对于其他问题,这是一个非常好的选择

答案 6 :(得分:0)

如果我们想将相同的功能应用于多个选择器,则可以使用多个选择器选项。 我认为我们可以说此功能的使用类似于可重用性。编写一个jQuery函数,然后添加多个我们想要相同功能的选择器。

请看以下示例:

$( "div, span, .paragraph, #paraId" ).css( {"font-family": "tahoma", "background": "red"} );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>Div element</div>
<p class="paragraph">Paragraph with class selector</p>
<p id="paraId">Paragraph with id selector</p>
<span>Span element</span>

我希望它将对您有所帮助。 Namaste