0

ライブ オペレーターを介して、クリック関数を 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% のケースで 1 回実行され、すべて問題ありません。ただし、ajax リクエストが 2 回以上実行される場合もあります。

これは、firebug からの出力です: (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

すべての要素が最悪の場合 6x DOM に追加されるため、これは私のレイアウトを完全に壊します。

この動作の理由を知っている人はいますか? または、「DOM への追加」コードが複数回実行されるのを修正することをお勧めします。

4

2 に答える 2

0

クリックイベントの終了前e.stopPropagation();だけでなく、コードに追加するreturn false;

于 2012-07-13T13:15:02.570 に答える
0

ライブ イベントを 2 回バインドしていないことを願っています。その場合は、これを使用してください。

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

または、ボタンを 1 回クリックしても、イベントが 2 回発生することがあります。

その場合、ボタンをクリックした後、複数の送信を防ぐために最初にボタンを非表示にします..

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

$(".UListView li input.iconbutton.click").hide();
..
..
..
});
于 2012-07-13T13:18:35.853 に答える