如何在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
});
})();