我找不到任何解决方案来让这个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请求而不是默认值,以及触发窗口的click事件一次。从A的单击中删除“return false”将触发窗口的单击,但在第一次单击后不会阻止其默认行为并继续非ajax请求。
两个处理程序都处于不同的闭包状态,因此我无法创建变量来帮助它工作,而且我也不想创建全局变量。
从上面的例子可以得出:
- >请求ajax(第一次点击)
- >隐藏的东西(第一次点击)
- >请求ajax(第二次点击)
- >请求ajax(第3次点击)
感谢您的帮助!
答案 0 :(得分:2)
在a
事件处理程序中添加第一行e.preventDefault()
(并删除返回false)。
$('a.ajax').live('click', function(e) {
e.preventDefault();
console.log('ajax requesting');
});
'return false'将取消所有未来事件(甚至是传播到窗口的事件),但preventDefault()只会阻止常规操作发生,但会继续事件链。