jQuery 选择器不是这个子元素

标签 jquery jquery-selectors click children

是否有任何方法可以将单击事件附加到多个元素,然后让该元素的所有子元素(除了 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/

相关文章:

java - 单击按钮时从另一个类调用方法

jQuery onclick 必须单击两次才能出现模式对话框

jQuery 切换 div 和文本

java - Xpath 的 FindElement 不适用于 "add New"按钮

jquery - 如何将背景图像 div 居中?

javascript - jQuery:焦点排除一些元素

javascript - 如何接受姓名和号码输入并将其添加到文档/网页

jquery - 复杂 css 列表的可排序列表元素故障

javascript - 匹配 jQuery 中任何类的所有组合

jquery - 组合选择器?