stopPropagation();不能阻止这个孩子div的顶部

时间:2011-07-05 14:00:35

标签: jquery events html parent-child stoppropagation

父母和孩子DIV之间的问题。当你点击子div时将显示与父div相同。我希望孩子div不遵循父div行动。我试过stopPropagation()不起作用,也许我很困惑。

html代码:

<div class="innerbox">
<div id="button"></div>
</div>

jQuery代码:

<script type="text/javascript">
//<![CDATA[
function ShowHide(d){
    $("div#button").click(function(e) {
       e.stopPropagation();
       return;
    });

    //$(".innerbox").click(function(e) {
        jQuery(d).animate({"height": "toggle"}, {
            duration: 500,
            complete: function() {
                //add action after complete action...
            }
        });
    //});
}
//]]>
</script>

1 个答案:

答案 0 :(得分:1)

如果你在点击“.innerbox”div时想要为它设置动画,但你不想让“#button”div动画,你必须要将“#button”div移出“.innerbox”div,因为子元素将受其父级动画的影响。

stopPropagation是关于阻止事件本身冒泡到祖先元素,而不是你所做的事情的影响。当然,在这种情况下,click事件正在停止,而不会发送到“.innerbox”div


这可能是偏离主题的,但是何时/如何致电ShowHide?因为你正在连接函数中的事件处理程序;每次拨打ShowHide 时,都会附加一个新的处理程序。我不认为这可能是你想要的......