2013-06-05 32 views
0

我有一個div:解決新創建的動態元素的ID

<div id="div1"></div> 

和腳本:

$(document).ready(function() { 
    $('#div1').load('/something/sub_something'); 
}); 

在同一頁上。 something/sub_something加載罰款的頁面做的時候,和:

document.getElementById("[dynamic_id_1]_folder_link").onclick = function(){ 
    div_refresh(); 
} 

然後div_refresh();刷新<div id="div1"></div>。現在,任何調用現在刷新的<div id="div1"></div>中新創建的動態ID的JavaScript函數都不起作用。我猜這是因爲jquery沒有意識到自從動態生成div以來更新的新id。我怎樣才能得到它以解決新的ID和運行相同:

document.getElementById("[dynamic_id_1]_folder_link").onclick = function(){ 
    div_refresh(); 
} 

代碼呢?

+0

爲什麼在創建div之後使用getElementById而不是$?此外,向我們展示如何在#div1 – kushyar

回答

1

使用委託事件處理程序。將當前事件處理程序替換爲:

$('#div1').on('click', '[dynamic_id_1]_folder_link', div_refresh); 

它也適用於將來的元素。

編輯:

你不能調用一個函數參數的方式,你必須做的:

$('#div1').on('click', '[dynamic_id_1]_folder_link', function() { 
    div_refresh(param); 
}); 
+0

中插入新的div。''('#div1')。on('click','[dynamic_id_1] _folder_link'%>',div_refresh('a_string_variable' ));'它似乎運行頁面加載的所有功能。假設在頁面加載時創建了4個動態鏈接,我只是用這樣的alert來替換:alert(「Hello World」);'''div_refresh'函數中的代碼。 「Hello World」將在頁面加載時顯示4次,如果點擊任何鏈接,則不會再次顯示。 –

+0

@JasonBurgett - 是的。請注意,div_refresh缺少圓括號,第二次添加它們時,函數會立即執行,所以要爲函數添加參數,您還需要一個匿名函數。 – adeneo

0

嘗試結合#div1一個事件,通過live()on()