如何在jquery中停止事件传播?

时间:2011-05-17 22:14:15

标签: jquery ajax

$("div#foobar").live('click', function() {  

});

$(window).hashchange(function() {   

});

如果hashchange事件发生,我怎么能停止发送click事件。

注意 在点击事件我发射ajax并更改哈希...而在hashchange我正在做的事情。由于Click事件也会更改哈希,因此会发生火灾。所以,我希望每当点击事件触发时,hashchange不应该被激活..

3 个答案:

答案 0 :(得分:10)

停止传播并防止默认行为。

$("div#foobar").live('click', function(event) {  
    event.stopPropagation();
    event.preventDefault()
});

答案 1 :(得分:1)

基本上,你不能做你想做的事。如果要更改散列,当然会触发hashchange事件。这就是它的用途。阻止传播click事件不会阻止hashchange事件的处理。

设计您的系统,以便这不是问题。

答案 2 :(得分:0)

(function() {

    var fire_hashchange = true;

    $("div#foobar").live('click', function() {  
        fire_hashchange = false;
        // do stuff
    });

    $(window).hashchange(function() {   
        if (!fire_hashchange) {
            fire_hashchange = true;
            return;
        }
        // do stuff
    });
})();