0

我找不到任何解决方案来让这个 jquery 事件工作。

$(window).one('click',function(){
   console.log('hide something');
   return false;
});

$('a.ajax').live('click', function(e){
   console.log('ajax requesting');
   return false;
});

我希望“A”元素应该执行 ajax 请求而不是其默认值以及触发窗口的单击事件一次。从 A 的单击中删除“return false”将触发窗口的单击,但不会阻止其在第一次单击后的默认行为并继续非 ajax 请求。

两个处理程序都处于不同的闭包中,所以我不能创建一个变量来帮助它工作,我也不想创建一个全局变量。

从我上面的示例应该导致:
-> ajax 请求(第一次单击)
-> 隐藏某些内容(第一次单击)
-> ajax 请求(第二次单击)
-> ajax 请求(第三次单击)

感谢您的帮助!

4

1 回答 1

2

在您的a事件处理程序中添加为第一行e.preventDefault()(并删除 return false)。

$('a.ajax').live('click', function(e) {
    e.preventDefault();
    console.log('ajax requesting');
});

'return false' 将取消所有未来的事件(甚至是传播到窗口的事件),但 preventDefault() 只会阻止常规操作发生,但会继续事件链。

更多信息: jQuery e.preventDefault 文档

于 2012-04-10T17:31:04.633 回答