2015-10-09 119 views
2

是否有可能只能調用一次函數嚴格?如每次頁面加載時一次。如何阻止jQuery .load()函數多次觸發?

我使用:

$(document).ready(function() { 
    $("#targetDiv").load("http://www.example.com #specificElementID"); 
}); 

我發現,如果你點擊遍佈網頁很多次,而它的負荷,它有時似乎加載兩次?有沒有辦法阻止這種行爲發生多次?我的印象是,有$(document).ready(function() { ...會幫助我實現這一點。但似乎並非如此!

+0

您發佈的代碼只會被調用一次。 「我發現,如果你在加載過程中點擊了整個頁面,有時候它似乎會加載兩次?」我想你的觀察是錯誤的。如果您使用任何點擊事件,然後發佈相關代碼 –

+4

此代碼片段是好的。向我們展示其他代碼。嘗試在JSFiddle中表示這個問題。 –

+0

顯示的任何代碼都不會導致此問題。是否再次加載相同的代碼? – charlietfl

回答

4

ready處理程序在正常情況下不會被調用一次以上。但是,如果您的文件被加載了兩次,這將導致準備好的處理程序被調用兩次。

使用布爾標誌可能掩蓋真正的問題(但你還是要看看有什麼根本的問題):

var _ready = false; 
$(document).ready(function() { 
    if (_ready) { return; } 
    _ready = true; 
    $("#targetDiv").load("http://www.example.com #specificElementID"); 
}); 

欲瞭解更多信息,請參閱此相關的問題:jQuery $(document).ready() fires twice

+2

準備好的處理程序將只會被調用一次,除非再次加載代碼。這個答案沒有意義 – charlietfl

+0

@charlietfl我的兄弟有完全相同的問題,這就是我們解決它的方式。我想知道load方法是否會調用ready處理程序兩次或與之相關的東西。看來[iframe可以創建這樣的行爲](http://stackoverflow.com/questions/10727002/jquery-document-ready-fires-twice#comment13935697_10727036)。 –

+0

@charlietfl我編輯了我的答案。 –

1

加入這行

$("#some_id").unbind('change'); 

前0