我有一个通过 ajax 加载的对话框。该ajax 的paylaod 包含html 和javascript。
该对话框显示得很好,并且该有效负载中包含的 JS 将执行。
但是,我无法从负载中的 JS 中选择任何元素(无论是通过 id、类还是元素类型)。
假设有效载荷有:
<div>
<ul id="testid">
<li>A</li>
<li>B</li>
</ul>
</div>
<script type="text/javascript">
$(document).ready(function() {
console.info('test: ' + $("#testid").length);
});
</script>
这导致 test: 0 出现在控制台中。
如果我将选择器更改为在“body”上选择,那么它会产生一个非零值。
显然加载的内容正在显示并且它包含的 JS 正在执行,我的理解是 .ready() 调用应该允许更新 DOM 时间以包含 html 有效负载。
不幸的是,在这种情况下,我无法直接控制 ajax 加载本身,因为我正在使用一个为我执行对话框功能的框架(zotonic)。
奇怪的是,我拥有的其他 ajax 加载页面具有选择 ajax 加载有效负载中的元素的 JS 正在工作 - 它只是(到目前为止)似乎失败的对话框内容。
我有点不知所措,为什么这会出错。在过去的几天里,我已经完成了尽职调查并搜索了谷歌等,但没有任何解决方案,所以我想在这里大声寻求帮助。
杰森