我通过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”代码多次执行。
答案 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();
..
..
..
});