子ノードの要求をリストに送信して表示する「onmouseover」によってトリガーされる非同期関数があります。これを同期させるように設定すると、これを防ぐことができますが、私が知る限り、ChromeとIEにロードアイコンを表示するには非同期である必要があります。問題は、関数がまだ実行されている間に複数回マウスオーバーすると、子を複数回読み込むことです。私が問題を抱えているのは、子ノードが複数回読み込まれるのを防ぐために、関数が一度に複数回実行されないようにすることです。jQuery - 非同期関数が同時に複数回実行されないようにする
ありがとうございます!
私のAJAX呼び出し(jQueryの代わりに$ Iはnoconflictモードで実行していますので):
var ul = "#ul_" + categoryId;
var ifUlExists = jQuery(ul);
// Only if UL not already loaded
if (ifUlExists.length == 0) {
jQuery.ajax({
type: 'POST',
url: '/adminajax/add_kids',
data: {
categoryId: categoryId
},
beforeSend:function(){
// Toggle +/- icon
jQuery(expandIcon).addClass("loading");
},
success:function(resp){
var kids = resp;
// If there are kids returned by the query
if (kids){
var container = "#c_"+categoryId;
jQuery(kids).insertAfter(jQuery(container));
jQuery(ul).slideDown("slow");
}
})};
} else {
jQuery(expandIcon).addClass("collapse");
jQuery(ul).slideDown("slow");
}
ありがとうございました。私が何時間も何時間も費やしてきたことを理解しようとしています。 – Matt