2011-03-03 42 views
0

我不是很好的JavaScript,我試圖通過外部的HTML頁面加載一些圖像到一個div,在jQuery中有一些不透明的功能。是否有一個簡單的函數會在ajax調用完成後重新應用所需的腳本。我看過jquery,但是在我開始把頭髮撕掉之前,我想知道我是否在正確的軌道上。還是有一個非常簡單的方法我缺少。加載到div時出現Ajax問題。 jquery

回答

4

是的,livedelegate是你的朋友。

具體而言,您應該嘗試使用delegate,因爲在被捕獲之前,與live綁定的事件會一直向上冒泡。

的語法delegate是:

$("#parent_element").delegate(
    "#child_selector_event_occurs_on", 
    "click" // <-- Event to declare a handler for 
    function() { ... }); 

所鏈接的文檔頁面delegate有一些例子。

編輯:

我上面的回答假設你失去綁定到多數民衆贊成被替換或AJAX更新的內容事件處理程序。如果您需要重新初始化小部件或運行其他自定義代碼,您可以將該代碼移到常用函數中,並在成功加載新內容(並在您的處理程序中)時調用它。

例如:

function init() { 
    /* Write initialization code here */ 
} 

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

/* Later on, when you reload the content: */ 
$("#ajaxified").load("foo.html", function() { init(); }); 

另一種方法是livequery插件,我沒有使用過,但我聽說過的好東西。具體而言,您會看到幫助功能功能:

$('#selector') 
    .livequery(function(){ 
     /* Write code here to execute when a new element matching the 
      selector is added. */ 
     init(); 
    }); 
+0

感謝您的回覆。仍然在與此掙扎。我會更改下面的代碼。 。函數LoadNewContent(ID,文件){ \t $( 「#」 + ID + 「.customScrollBox。內容」)的負載(文件,功能(){ \t \t mCustomScrollbars(); \t}); } – simon 2011-03-03 01:19:57

+0

@simon:如果你有更具體的問題,你應該編輯你的問題。 'delegate'和'live'只能用於事件處理程序。如果您需要重新初始化小部件或運行其他代碼,則每次加載AJAX內容時都必須這樣做。 – 2011-03-03 01:23:18

+0

對不起安德魯。你剛剛說的就是我的意思。我只是不確定如何說出它。我如何重新初始化或重新運行代碼。有一個簡單的方法。 – simon 2011-03-03 01:31:53