0

我通过 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 次甚至更多次:

这是萤火虫的输出:(执行两次)

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

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

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

4

2 回答 2

0

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

于 2012-07-13T13:15:02.570 回答
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();
..
..
..
});
于 2012-07-13T13:18:35.853 回答