Javascript document.contains不能在IE11上运行

时间:2016-07-26 06:03:39

标签: javascript jquery

我正在使用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>

1 个答案:

答案 0 :(得分:4)

我已经意识到问题不在于&#39; insertAfter&#39;完全命令,但使用&#39; document.contains&#39;。显然,IE并不认为&#39;文件&#39;作为一个节点,我需要使用&#39; document.body.contains&#39;确定行末的项目。

例如

  

if(document.body.contains(rollerItems [n + 1])){rowEnd =   rollerItems [N + 1]; }

一行一行地穿过所有东西但是闪过它!不确定这是否是最佳解决方案,但现在至少可以使用。