jQuery Ajax请求执行得太频繁了

时间:2012-07-13 13:11:58

标签: jquery ajax live

我通过live运算符将click函数绑定到li元素:

$(".UListView li input.iconbutton.click").live("click", function(e){

e.preventDefault();
[...]
$.get("ajax/categorylist.php?appendcategories=true&parentcat="+currentid+"&side="+side, function(data){
[...]
});

});

在近90%的案例中,它被执行了一次,一切都没问题。但有时ajax请求会被执行2次甚至更多次:

这是firebug的输出:(执行两次)

jquery.min.js (Zeile 4)
GET htt-p://localhost/request.php?....    200 OK     11ms   
jquery.min.js (Zeile 4)
GET htt-p://localhost/request.php?....    200 OK      19ms

这完全破坏了我的布局,因为所有元素都在最坏的情况下被添加到DOM中。

有人知道这种行为的原因是什么?或者好主意修复“添加到DOM”代码多次执行。

2 个答案:

答案 0 :(得分:0)

在点击事件结束前将e.stopPropagation();添加到您的代码以及return false;

答案 1 :(得分:0)

我希望你没有两次绑定直播活动..在这种情况下使用这个..

 $(".UListView li input.iconbutton.click").die("click");
   $(".UListView li input.iconbutton.click").live("click", function(e){
..
..
..
});

或有时即使我们点击按钮一次,事件也会被触发两次..

在这种情况下,点击按钮后首先隐藏按钮以防止多次提交..

$(".UListView li input.iconbutton.click").live("click", function(e){

$(".UListView li input.iconbutton.click").hide();
..
..
..
});