2015-04-07 72 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>'); 
}