是否有任何方法可以将单击事件附加到多个元素,然后让该元素的所有子元素(除了 THIS 的子元素(单击的元素)之外)来运行函数?
这是一个糟糕的解释,但我正在寻找这样的东西:
$(".block_header").click(function(){
$(".block_header span:not(this span)").toggleClass("collapse expand");
$(".container:not(this+div.container)").slideToggle();
});
这是一个 HTML 示例:
<h3 id="sender_header" class="block_header"><span>Sender</span></h3>
<div id="sender_container" class="container">
<p>Show or hide this, based on which H3 is clicked.</p>
</div>
<h3 id="receiver_header" class="block_header"><span>Receiver</span></h3>
<div id="receiver_container" class="container">
<p>Show or hide this, based on which H3 is clicked.</p>
</div>
<h3 id="delivery_header" class="block_header"><span>Delivery</span></h3>
<div id="delivery_container" class="container">
<p>Show or hide this, based on which H3 is clicked.</p>
</div>
<h3 id="items_header" class="block_header"><span>Items</span></h3>
<div id="items_container" class="container">
<p>Show or hide this, based on which H3 is clicked.</p>
</div>
.... etc, etc (many more of the same)
希望这不会太复杂。它会节省我很多代码。
最佳答案
您可以使用not()
,而不是排除选择器中的元素。函数,它接受要从 jQuery 集中删除的 DOM 元素或 jQuery 对象。
$(".block_header").click(function(e) {
$('.block_header span').not($(this).find('span')).toggleClass("collapse expand");
$('.container').not($(this).next()).slideToggle();
});
关于jQuery 选择器不是这个子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10599094/