2015-04-07 69 views
2

我想將html插入動態創建的表(使用數據表)。在document.ready()函數中,初始化數據表後,我把JQuery不能找到動態創建的元素

$("div.menuContainer").html('<select id="dropdownMenu1"> </select>'); 

它不起作用。但是,如果我在瀏覽器控制檯加載頁面後輸入此行的作品。該怎麼做人?

+1

嘗試使用活().. https://api.jquery.com/live/ –

+0

嘗試在$執行(窗口).load() – kapantzak

+0

但我應該給它綁定什麼事件?我只是想在創建時加載html。 – Paulie

回答

1

由於渲染DataTable的是異步操作(假設它也需要獲取一些服務器端的數據),之後你不能只是執行代碼表初始化:它仍未呈現,並且HTML結構尚未準備好。

而是使用DataTables API事件。在你的情況init事件應該做的伎倆:

$('.table').on('init.dt', function() { 
    $("div.menuContainer").html('<select id="dropdownMenu1"> </select>'); 
}); 

或者你可以使用表配置initComplete回調。

+0

你是genious!有效!非常感謝, 我花了幾個小時。 – Paulie

+0

很高興它解決了你的問題! – dfsq

0

嘗試訪問靜態父母和使用發現

$(use_parent_static_div_id).find(dynamic_element_id); 

這裏父指的父DIV動態地創建表

0

確定div.menuContainer存在?

試試這個動態插入後:

$("body").find("div.menuContainer").html('<select id="dropdownMenu1"></select>'); 
0

可以使用datatablefnInitComplete功能。

"fnInitComplete": function() { 
$("div.menuContainer").html('<select id="dropdownMenu1"> </select>'); 
}