2010-11-19 77 views
22

我正在使用.load()將靜態HTML文件拖到我的主HTML頁面上。我寫的腳本和選擇器存在於:在AJAX加載的內容上運行JQuery腳本

$(document).ready(function(){}); 

但是它們不適用於加載了AJAX的內容。我讀過這是因爲我使用的選擇器不可用。

有沒有更好的方法來做到這一點?添加腳本到window.load功能不起作用或者:

$(window).load(function() {}); 
+0

只是爲了確認,你的$(document任何設置一個可選的回調函數的參數).ready函數沒有在您要加載到主頁面的.html文件中執行?或者$(document).ready沒有定位你通過AJAX加載的元素? – WiseGuyEh 2010-11-19 15:16:25

+0

後者。在加載的.html文件中沒有$(document).ready。應該有嗎? – mmcglynn 2010-11-19 16:07:30

回答

65
$(document).ajaxComplete(function(){ 
    // fire when any Ajax requests complete 
}) 

ajaxComplete()

+1

謝謝Jman,太棒了! – mmcglynn 2010-11-19 20:06:31

+1

非常感謝你!我被困在這半天,現在我可以繼續我的代碼:D – justinl 2011-01-11 02:51:32

+1

但是,每次AJAX調用後會觸發......這可能會影響性能,對不對?有沒有辦法手動觸發jQuery? – Bryce 2013-11-03 02:00:17

3

有多個選項:

  1. 您可以添加初始化腳本[$(this).click...]進入$.load()
  2. callback功能
  3. 您可以使用$.live(),即使對於動態加載/創建的對象也會創建處理程序。

這裏更多
回調:http://api.jquery.com/load/(注意 「complete()」 功能)
綁定:http://api.jquery.com/live/

編輯:我的錯誤,這是live(),不bind(),感謝你們

+0

我認爲它是'$ .live()'動態創建的對象。 http://api.jquery.com/live/ – 2010-11-19 15:21:15

+0

我認爲你的意思是'live'函數,它等同於綁定,但適用於動態創建的元素。 – Tesserex 2010-11-19 15:21:38

1

您可以通過jQuery的將事件綁定到動態加載的內容3210。

從jQuery的http://api.jquery.com/live/

附加一個處理程序的情況下爲當前選擇現在和將來匹配這,所有的元素。

0

jQuery load需要,你可以用它來你需要在您的AJAX-ED內容加載