多选择器链接在 jQuery? ?

通常,当我使用一个类作为选择器时,我会尝试使用一个“ 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});

所以基本上是一样的代码。我想知道是否有办法让它寻找身份证中的任何一个?

剪辑

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

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


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

好像没跑。

160373 次浏览

你可以用逗号组合多个选择符:

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

或者,如果有一大堆这样的元素,可以向所有表单元素添加一个类,然后在该类中进行搜索。这并不能让你得到所谓的限制搜索的速度节省,但老实说,如果我是你,我不会担心太多。浏览器在您的背后做了很多奇妙的事情来优化常见的操作——简单的类选择器可能更快。

例如:

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

您可以指定任意数量的 选择器组合成一个 这个多重表达式 组合子是一种有效的方法 选择不同的元素。顺序 中的 DOM 元素 JQuery 对象可能不完全相同,如 它们将按文件顺序排列 这个组合子的另一个选择是 . add ()方法。

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

使用 $.fn.add连接两个集合。

你应该能够使用:

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

JQuery | 多选择器

我认为你可以通过这种方式看到稍微好一点的表现:

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

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

特别是当我们想要使用 regexp 时,而不是使用标准的 regexp。

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

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


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


}).plugin(...);

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

如果我们想对多个选择器应用相同的功能和特性,那么我们使用多个选择器选项。 我想我们可以说这个特性被用作可重用性。编写一个 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>

我希望这能帮到你。 合十礼