一個非常精簡的版本:添加了多個元素如何.load()只有一次?
情景兩個選擇,我的動畫,然後加載使用 看來load()
是triggerd兩次element_A
和element_B
外部網頁... 有沒有辦法只能把它觸發一次?
$('.element_A, .element_B').click(function(){
//...
$(".element_C").load("someFile", etc);
//...
});
一個非常精簡的版本:添加了多個元素如何.load()只有一次?
情景兩個選擇,我的動畫,然後加載使用 看來load()
是triggerd兩次element_A
和element_B
外部網頁... 有沒有辦法只能把它觸發一次?
$('.element_A, .element_B').click(function(){
//...
$(".element_C").load("someFile", etc);
//...
});
帕特里克DW建爲解決方案的基礎。需要添加某種指標才能觸發一次負載。
$temp_LoadCounter = 0; // added
$('.element_A, .element_B').click(function(){
//...
$temp_LoadCounter += 1; // added
if ($temp_LoadCounter == 1) { // added
$(".element_C").load("someFile", etc);
//...
} // added
});
使用標誌來指示是否已經運行。
var triggered = false; // our flag
$('.element_A, .element_B').click(function(){
// if it hasn't run yet, run it and set "triggered" to "true"
if(!triggered) {
$(".element_C").load("someFile", etc);
triggered = true;
}
});
如果需要,可以在回調爲load
設置回false
。
或者,如果它爲什麼被解僱兩次的原因是,在選擇的要素之一是嵌套在另一個裏面,那是因爲該事件被冒泡。
可以防止return false;
或event.stopPropagation()
(docs)法氣泡。
$('.element_A, .element_B').click(function(event){
// prevent the event from bubbling and triggering the handler again
event.stopPropagation();
$(".element_C").load("someFile", etc);
});
喜帕特里克DW。 你明確指出我到正確的方向這是關鍵的解決方案! 方法之一是幫助解決問題的關鍵。唯一的問題是,一旦觸發了AJAX負荷後重新設置爲true,它是可利用足夠快它可用於第二輪的。即使它放在相關代碼最後一行的最後。最後我用它精美的作品的計數器。 我將其添加爲回答這個線程。 方法2沒有,即使內容裝入容器內element_B nexted任何影響。 – PixelGrinch