切换最近的元素,但在当前类之外

时间:2015-10-06 07:41:20

标签: jquery

这里我想隐藏msg_wrap div,它是最接近(之后)点击的msg_head类。我的jquery:

$(document).on("click", ".msg_head", function() {
  $(this).closest('.msg_wrap').slideToggle('slow');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="msg_head" id="c_name_msgHead">
  <div class="close">x</div>
</div>

<div class="msg_wrap">wrap
</div>

<div class="msg_head" id="c_name_msgHead">
  <div class="close">x</div>
</div>

<div class="msg_wrap">wrap
</div>

但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

.closest()查找祖先树:

  

描述:对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取与选择器匹配的第一个元素。

您需要的是.next()

  

描述:获取匹配元素集中每个元素的紧随其后的兄弟。如果提供了选择器,则仅当它与该选择器匹配时,它才会检索下一个兄弟。

&#13;
&#13;
$(document).on("click", ".msg_head", function() {
  $(this).next('.msg_wrap').slideToggle('slow');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="msg_head" id="c_name_msgHead">
  <div class="close">x</div>
</div>

<div class="msg_wrap">wrap
</div>

<div class="msg_head" id="c_name_msgHead">
  <div class="close">x</div>
</div>

<div class="msg_wrap">wrap
</div>
&#13;
&#13;
&#13;