jquery:使用一个(单击)事件实时(单击)ajax

时间:2012-04-10 17:29:22

标签: jquery ajax click live

我找不到任何解决方案来让这个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次点击)

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

a事件处理程序中添加第一行e.preventDefault()(并删除返回false)。

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

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

更多信息:jQuery e.preventDefault documentation