JQuery找不到动态创建的元素

时间:2015-04-07 06:40:42

标签: javascript jquery datatables

我想将html插入到动态创建的表中(我正在使用数据表)。在document.ready()函数中,初始化数据表后我把

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

它不起作用。但是如果我在加载页面后在浏览器控制台中输入这一行就可以了。该怎么办?

5 个答案:

答案 0 :(得分:1)

由于DataTable的呈现是异步操作(假设它还需要获取一些服务器端数据),所以不能在表初始化之后执行代码:它仍然没有呈现并且HTML结构尚未就绪。

相反,请使用DataTables API事件。在您的情况下,init事件应该起作用:

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

或者您可以在表格配置中使用initComplete回调。

答案 1 :(得分:0)

尝试访问静态父级并使用find

$(use_parent_static_div_id).find(dynamic_element_id);

此处,parent表示动态创建的表

的父div

答案 2 :(得分:0)

你确定div.menuContainer存在吗?

动态插入后尝试此操作:

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

答案 3 :(得分:0)

您应该尝试在父类上使用'delegate' method

  

Delegate为所有元素的一个或多个事件附加处理程序   根据特定集合,现在或将来匹配选择器   根元素。

您可能会发现此答案很有用: jQuery trigger delegation as soon as created

答案 4 :(得分:0)

您可以使用datatable fnInitComplete功能。

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