我正在开发一个 Business Catalyst 网站 (Adobe)。我需要在每行项目之后插入一个占位符 div,另一个脚本稍后将信息附加到该项目。这在大多数浏览器上工作正常,但在 IE 11 上没有任何作用。
脚本查找一行中的最后一项以插入后,即。行包含 4 个项目,但如果最后一行只有 1 或 2 个,它会将其插入到最后一个之后。
我使用的是 Jquery 1.1,但刚切换到 1.7,似乎没有什么区别。
我的标记:
<div class="roller col-md-3" id="roller001">
<div class="roller-type">
<div class="roller-image">
{tag_small image_nolink}
</div>
<a class="roller-btn" onclick="appendRoller{tag_itemid}('{tag_itemid}')" href="javascript:void(0);">{tag_name_nolink}</a>
</div>
</div>
<div class="roller col-md-3" id="roller002">
<div class="roller-type">
<div class="roller-image">
{tag_small image_nolink}
</div>
<a class="roller-btn" onclick="appendRoller{tag_itemid}('{tag_itemid}')" href="javascript:void(0);">{tag_name_nolink}</a>
</div>
</div>
脚本:
<script type="text/javascript">
$(document).ready(function(){
var rollerItems = document.getElementsByClassName('roller');
for (n=0; n<rollerItems.length; n++) {
if(n%4 == 0) {
var rowEnd = rollerItems[n];
if(document.contains(rollerItems[n+1])) { rowEnd = rollerItems[n+1]; }
if(document.contains(rollerItems[n+2])) { rowEnd = rollerItems[n+2]; }
if(document.contains(rollerItems[n+3])) { rowEnd = rollerItems[n+3]; }
$('<div class="popup-row"></div>').insertAfter(rowEnd);
}
}
});
</script>
最佳答案
我意识到问题根本不在于“insertAfter”命令,而在于“document.contains”。显然 IE 不将“文档”视为节点,我需要使用“document.body.contains”来确定行末尾的项目。
例如。
if(document.body.contains(rollerItems[n+1])) { rowEnd = rollerItems[n+1]; }
逐行检查所有内容,但掩盖了这一点!不确定这是否是最佳解决方案,但至少现在可以使用。
关于Javascript document.contains 不适用于 IE11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38582105/