0
我不是很好的JavaScript,我試圖通過外部的HTML頁面加載一些圖像到一個div,在jQuery中有一些不透明的功能。是否有一個簡單的函數會在ajax調用完成後重新應用所需的腳本。我看過jquery,但是在我開始把頭髮撕掉之前,我想知道我是否在正確的軌道上。還是有一個非常簡單的方法我缺少。加載到div時出現Ajax問題。 jquery
我不是很好的JavaScript,我試圖通過外部的HTML頁面加載一些圖像到一個div,在jQuery中有一些不透明的功能。是否有一個簡單的函數會在ajax調用完成後重新應用所需的腳本。我看過jquery,但是在我開始把頭髮撕掉之前,我想知道我是否在正確的軌道上。還是有一個非常簡單的方法我缺少。加載到div時出現Ajax問題。 jquery
具體而言,您應該嘗試使用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();
});
感謝您的回覆。仍然在與此掙扎。我會更改下面的代碼。 。函數LoadNewContent(ID,文件){ \t $( 「#」 + ID + 「.customScrollBox。內容」)的負載(文件,功能(){ \t \t mCustomScrollbars(); \t}); } – simon 2011-03-03 01:19:57
@simon:如果你有更具體的問題,你應該編輯你的問題。 'delegate'和'live'只能用於事件處理程序。如果您需要重新初始化小部件或運行其他代碼,則每次加載AJAX內容時都必須這樣做。 – 2011-03-03 01:23:18
對不起安德魯。你剛剛說的就是我的意思。我只是不確定如何說出它。我如何重新初始化或重新運行代碼。有一個簡單的方法。 – simon 2011-03-03 01:31:53