我知道我可以使用$.each
将相同的事件处理程序应用于两个不同的jQuery对象。我很惊讶不可能有一个更清晰的语法,如:
var $span = $('span');
var $div = $('div');
var clickHandler = function () {
$(this).toggleClass('red');
}
$($span, $div).on('click', clickHandler); // <-- Neater syntax
$([$span, $div]).on('click', clickHandler); // <-- A little worse, but still better than $.each
为什么我试过的语法不起作用?是否有更简洁的替代方法来使用$.each
?
答案 0 :(得分:2)
您可以将CSS语法用于多个选择器 - 逗号,
:
$('span, div').on('click', clickHandler);
或者,如果您有包含元素的变量,则可以使用add()
$span.add($div).on('click', clickHandler);
答案 1 :(得分:2)
$span.add($div).on('click', clickHandler)
根据add()
docs。
$($span, $div)
被解释为$span
,它们是$div
的后代。 $([$span, $div])
期望数组元素为DOMElements
,而不是jQuery对象(我一直希望这也是可能的)答案 2 :(得分:1)
您还可以使用jQuery的.add()
link方法扩展包装集
$span.add( $div ).on( 'click', clickHandler );
答案 3 :(得分:-2)
在我看来,你理解选择器而不是处理程序有问题,就像上面提到的其他人一样:使用;
$('span, div')