我需要执行:
$('.btn-toolbar').toolbar({
content: '#toolbar-options'
});
具有.btn-toolbar
类的元素不在 DOM 中,因为它们是在和ajax请求之后添加的。 如何选择DOM之外的元素?。
在另一个类似的问题中,它可以用Delegate Event解决,但是我没有任何可管理的事件,不需要启用单击,悬停或任何其他事件。我只想对btn-toolbar
的所有元素执行工具栏功能,但是$('.btn-toolbar')
目前为空。
答案 0 :(得分:1)
在将.btn-toolbar类的元素放入DOM之后,您可以在ajax调用成功/完成上执行代码。
$.ajax({
....
}).done(function() {
// Places/Inserts the .btn-toolbar elements in the page.
$('.btn-toolbar').toolbar({
content: '#toolbar-options'
});
});
如果ajax调用是由其他脚本发出的,而您无法注入(例如-由其他插件的缩小脚本,或者该脚本来自其他站点)来注入您的代码,那么您仍然可以干扰ajax调用并附加您的要运行的代码。 您可以使用jQuery.ajaxSetup()自定义在网站中进行的ajax调用。
例如,只要通过以下方式成功完成ajax调用,您就可以运行代码:
$( document ).ajaxSuccess(function() {
$('.btn-toolbar').toolbar({
content: '#toolbar-options'
});
});
答案 1 :(得分:0)
如果一个元素不在任何元素子树中(即,不是任何其他元素的子元素),并且您没有持有对该元素的引用(其他任何对象也都没有引用它),则该元素实际上已经消失了,并且受制于垃圾收集。
如果您持有引用,则需要使用该引用。如果它是某个其他元素的子元素( 元素是否在DOM树中),则需要在选择中包括该父元素,这意味着您至少需要一个引用到该父元素。否则,您实际上并没有其他途径。
如果该元素实际上还不存在,而您只是在说“在加载到页面中时在任何.btn-toolbar
上调用此命令”,那么您需要一个突变观察者。