选择性停止传播jquery

时间:2012-07-19 20:49:49

标签: jquery stoppropagation

Javascript代码:

$(".div1").click(function(event){
    event.stopPropagation();
    $(".div1 div").slideToggle();
});

$(".div2").click(function(event){
    event.stopPropagation ();
    $(".div2 div").slideToggle();
});

$(document).click(function(event){
    $(".div1 div,.div2 div").slideUp();
});

假设我点击了.div1& .div1 div向下滑动。然后我点击.div2但是当执行event.stopPropagation时,.div1 div不会向上滑动。所以我该怎么做?我不想把这段代码$(".div1 div").slideUp();放在一边,因为没有像这样的div太多了

1 个答案:

答案 0 :(得分:2)

jsBin demo

这将处理无限数量的DIV,因此您无需重写代码。

HTML :(只需在您的父元素中添加.box即可使所有内容更简单:)

<div class="div1 box">
  <h2>DIV 1</h2>
  <div>
    Lorem <br>
    Ipsum<br>
    ....
  </div>
</div>

jQuery的:

$(".box").click(function(event){
    event.stopPropagation();
    var el = $(this).find('div');
    check = (el.is(':visible')) ? el.slideUp() : ($('.box > div').slideUp()) (el.slideDown());
});

$(document).click(function(event){
  $(".box > div:visible").slideUp();
});