将多个元素数组组合成单个 jQuery 选择器

Posted

技术标签:

【中文标题】将多个元素数组组合成单个 jQuery 选择器【英文标题】:Combine multiple arrays of elements into single jQuery selector 【发布时间】:2018-07-09 13:36:12 【问题描述】:

如果我有多个元素数组,将它们一起引用以对所有元素执行操作的语法是什么?

  $b = $('.b');
  $c = $('.c');
  $($b, $c).addClass('selected'); // only selects elements in $b

https://codepen.io/awestmoreland/pen/eVmEZZ

我在自责,因为我知道我遗漏了一些明显的东西。

【问题讨论】:

【参考方案1】:

您可以使用add() 方法:

$b.add($c).addClass('selected');

这显然是假设您已经拥有这些引用,否则您可以只使用一个用逗号分隔的选择器:

$('.b, .c').addClass('selected');

【讨论】:

谢谢。我已经有了参考资料,所以我想避免再次查找它们。【参考方案2】:

另一种最短的执行方式:

$('li.b, li.c').addClass('selected');

【讨论】:

【参考方案3】:

您可以使用.add(),或创建一个数组并通过它循环(.each())。 注意:不要使用.add() 使您的代码过于复杂,通过$('.b, .c') 选择会更好。

//.add():
$b1 = $('.b.one');
$c1 = $('.c.one');

$($b1).add($c1).addClass('selected');

//.each():
$b2 = $('.b.two');
$c2 = $('.c.two');
$([$b2, $c2]).each(function()
  $(this).addClass('selected');
)
div
  width: 15px;
  height: 15px;
  display: inline-block;


.b
  background-color: red;


.c
  background-color: blue;


.selected
  background-color: purple !important;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>.add() :</p>
<div class="b one">R</div>
<div class="c one">B</div>

<br/><br/>

<p>.each() :</p>
<div class="b two">R</div>
<div class="c two">B</div>

【讨论】:

啊,我试过数组,但忽略了使用 .each。好提示!【参考方案4】:

第二个参数是context,所以它不会像你预期的那样工作。您可以使用add() 方法创建新的组合jQuery 选择器。

$b.add($c).addClass('selected');

var $b1 = $('.b'),
  $c1 = $('.c');

$b1.add($c1).addClass('selected');
.selected 
  color: red;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="b">R</div>
<div class="c">B</div>

【讨论】:

完美。谢谢!

以上是关于将多个元素数组组合成单个 jQuery 选择器的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 选择器

jQuery 选择器

jQuery 选择器

非常easy学习的JQuery库 : 选择器

jQuery 选择器 与 事件

jQuery 选择器