jquery-live还是stopPropagation?

时间:2011-04-27 09:07:22

标签: jquery

<input type="button" class="pop_up" value="pop_up" />
<input type="button" class="go_back" value="go_back" />

<div id="contents"></div>

<script>

$(".pop_up").live("click", function (e) {
    var seq = $(this).val()
    alert(seq);
}); // #1  

$(".go_back").live("click", function (e) {
    $("#contents").load("test.php");
}); // #2

</script>

现在,

根据点击次数#2,弹出#1警报窗口。

有谁能让我知道如何阻止#2

的事件冒泡

提前谢谢

2 个答案:

答案 0 :(得分:0)

如果#1事件被触发,您可以尝试使用指示器,并且只有在没有触发#1事件的情况下才能处理#2功能。

$(".pop_up").live("click",function(e)
{
     $(this).data('pop_up_click', true); // set 'pop_up_click' property to the element
     // #1 var seq=$(this).val() alert(seq);
}); 
$(".go_back").live("click", function(e)
{
    if(!$(this).data('pop_up_click'))    // execute something  only if there is no 'pop_up_click' property 
       // #2 $("#contents").load( "test.php" );
});

答案 1 :(得分:-1)

参考接受的答案here,这个 MAY 可以工作。

$(".go_back").live("click", function(e) {   // #2
    $("#contents").load("test.php");
    e.stopImmediatePropagation()
});

如果可能,真正的解决方案是使用.bind(),前提是您不需要直接.live()的好处。