jQuery中有多个选择器链接?

cho*_*bo2 59 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>
Run Code Online (Sandbox Code Playgroud)

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

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

$('#Edit .myClass').plugin({options here});
Run Code Online (Sandbox Code Playgroud)

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

编辑

当我的选择器有变量时,我遇到了问题

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

 $(selector.A+ selectors.Plugin, selector.B+ selectors.Plugin)
Run Code Online (Sandbox Code Playgroud)

似乎没有运行.

Leo*_*opd 89

您可以将多个选择器与逗号组合:

$('#Create .myClass,#Edit .myClass').plugin({options here});
Run Code Online (Sandbox Code Playgroud)

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


Ray*_*nos 42

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

使用$.fn.add来连接两套.


Rio*_*ams 10

你应该可以使用:

$('#Edit.myClass, #Create.myClass').plugin({options here});
Run Code Online (Sandbox Code Playgroud)

jQuery | 多个选择器


Kev*_*nis 9

我认为通过这种方式可能会看到稍微好一点的性能:

$("#Create, #Edit").find(".myClass").plugin(){
    // Options
});
Run Code Online (Sandbox Code Playgroud)


Cas*_*jne 6

喜欢:

$('#Create .myClass, #Edit .myClass').plugin({ 
    options: here
});
Run Code Online (Sandbox Code Playgroud)

您可以指定任意数量的选择器组合成单个结果.这种多表达式组合子是选择不同元素的有效方法.返回的jQuery对象中DOM元素的顺序可能不相同,因为它们将按文档顺序排列.该组合器的替代方法是.add()方法.