【发布时间】:2015-07-13 21:30:57
【问题描述】:
我遇到了一些以前从未见过的 wrapInner 问题。该页面是一个动态生成的页面,这是预期的,我正在尝试将一个 div 的所有元素包装在一个表格的表格中。
以下是 HTML 代码示例:
<div class="n-files-all" id="yw4">
<div class="yiiPager">
<div class="n-file">content</div>
<div class="n-file">content</div>
<div class="n-file">content</div>
</div>
</div>
这里是javascript:
var checkExist = setInterval(function() {
if ( icon_container.find(".n-file").length ) {
// if there are children, do this
console.log("There are n-files!");
$(".n-files-all .yiiPager").wrapInner("<table id='myGrid' class='tablesorter'></table>");
clearInterval(checkExist);
}
}, 100);
它进入 if 块,因为我可以将发送日志放入控制台,我可以在那里看到它。
我试图以这个非常简单的方式结束(我最终会将内部元素包装在 tr 和 td 中):
<div class="n-files-all" id="yw4">
<div class="yiiPager">
<table id="myGrid" class="tablesorter">
<div class="n-file">content</div>
<div class="n-file">content</div>
<div class="n-file">content</div>
</table>
</div>
</div>
这是最重要的,如果我将代码复制并粘贴到控制台中,它就可以正常工作并执行我想要的操作。会发生什么? setInterval 应该通过等待内容来工作,但我也尝试了 $( document ).ready() 来等待整个文档加载。
提前致谢!
更多信息:
因此,如果我将纯文本附加或预先添加到 div 中,它会起作用。但如果我尝试在 html 前面添加或附加任何内容,它不会,它会删除 HTML 并只留下文本。
【问题讨论】:
-
icon_container.length在if块中的计算结果是什么?也许它是在 DOM 准备好之前定义的。 -
复制时哪个代码部分有效?包括 setInterval 在内的整个事情?
-
计算结果为 3,即 div 中有多少孩子。谢谢。
-
这部分工作,减去 setInterval 代码:
if ( icon_container.find(".n-file").length ) { console.log("There are n-files!"); $(".n-files-all .yiiPager").wrapInner("<table id='myGrid' class='tablesorter'></table>"); }
标签: javascript jquery