2011-02-11 22 views
1

一個非常精簡的版本:添加了多個元素如何.load()只有一次?

情景兩個選擇,我的動畫,然後加載使用​​ 看來load()是triggerd兩次element_Aelement_B外部網頁... 有沒有辦法只能把它觸發一次?

$('.element_A, .element_B').click(function(){ 

    //... 

    $(".element_C").load("someFile", etc); 

    //... 

}); 

回答

0

帕特里克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 

}); 
1

使用標誌來指示​​是否已經運行。

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); 

}); 
+0

喜帕特里克DW。 你明確指出我到正確的方向這是關鍵的解決方案! 方法之一是幫助解決問題的關鍵。唯一的問題是,一旦觸發了AJAX負荷後重新設置爲true,它是可利用足夠快它可用於第二輪的。即使它放在相關代碼最後一行的最後。最後我用它精美的作品的計數器。 我將其添加爲回答這個線程。 方法2沒有,即使內容裝入容器內element_B nexted任何影響。 – PixelGrinch

相關問題