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

如何在jquery中停止事件传播?,jquery,ajax,Jquery,Ajax,当单击事件触发时,如何停止触发hashchange事件 注意 单击事件时,我正在启动ajax并更改哈希。。。我正在做一些改变。因为Click事件也会更改哈希,所以hashevent会激发。因此,我希望无论何时单击事件激发hashchange都不应激发..停止传播并防止默认行为 $("div#foobar").live('click', function() { }); $(window).hashchange(function() { }); 基本上,你不能做你想做的事。如果您

单击
事件触发时,如何停止触发
hashchange
事件

注意
单击事件时,我正在启动ajax并更改哈希。。。我正在做一些改变。因为Click事件也会更改哈希,所以hashevent会激发。因此,我希望无论何时单击事件激发hashchange都不应激发..

停止传播并防止默认行为

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

});

$(window).hashchange(function() {   

});

基本上,你不能做你想做的事。如果您正在更改哈希,当然会触发hashchange事件。这就是它的目的。阻止
click
事件的传播不会阻止
hashchange
事件的处理


设计您的系统,这样就不会有问题。

谢谢你的提问,我不知道live()方法有多棒,我只知道bind()。@SidCool:如果你认为这很棒,也看看。它比
live()
更高效。单击div时会发生什么?哈希在什么阶段更改?提供更多的上下文将非常有用。谢谢@Town。我现在意识到jQuery中有很多我不知道的东西,我发现它们很有用。
$("div#foobar").live('click', function(event) {  
    event.stopPropagation();
    event.preventDefault()
});
(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
    });
})();