jQuery选择器不是这个孩子

Ric*_*ris 6 jquery children click jquery-selectors

是否有任何方法可以将click事件附加到多个元素,然后将所有子元素都添加到该元素中,除了THIS(单击一个)的子元素以运行函数?

这是一个可怕的解释,但我正在寻找这样的事情:

$(".block_header").click(function(){
    $(".block_header span:not(this span)").toggleClass("collapse expand");
    $(".container:not(this+div.container)").slideToggle();
});
Run Code Online (Sandbox Code Playgroud)

这是一个示例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)
Run Code Online (Sandbox Code Playgroud)

希望这不是太复杂.它会省去很多代码.

Mat*_*att 15

您可以使用该not()函数来接受要从jQuery集中删除的DOM元素或jQuery对象,而不是排除选择器中的元素.

$(".block_header").click(function(e) {
    $('.block_header span').not($(this).find('span')).toggleClass("collapse expand");

    $('.container').not($(this).next()).slideToggle();
});
Run Code Online (Sandbox Code Playgroud)