在IE中,数组变为空/未定义

时间:2015-07-16 12:57:02

标签: javascript jquery internet-explorer

我的功能基于具有当前结构和WS的数据格式。我的代码是通过js / jquery获取数据并在新结构中重新排列。它在除IE之外的所有浏览器和移动设备中都能正常工作。它不适用于任何IE版本。 WS数据进入“包装器”,我再次将其设置为两个div,即“lDiv”和“rDiv”。代码在这里需要更多说明:

    var firArr = new Array();   

    function firstFn(){  
        firArr = $("#container").find(".wrapper");
        var len = firArr.length;
         $("#container").html("");

        $("#container").append('<div class="lDiv"></div><div class="rDiv"></div>');

         for(var x=0; x < len ; x++){
             var html="";                
             if(x % 2 != 0){    
                html = firArr[x];                    
                $(".rDiv").append(html);
             }
            else{           
                html = firArr[x];           
                $(".lDiv").append(html);
            }
        }       
    }
    firstFn();

1 个答案:

答案 0 :(得分:2)

IE从DOM中删除后,似乎没有对您的元素的引用。使用临时容器来解决这个问题:

&#13;
&#13;
function firstFn(){  
    var temp = $('<div class="lDiv"></div><div class="rDiv"></div>');
    
    $("#container .wrapper").each(function(i,o){                                  
        temp.eq(i % 2).append(o);
    });

    $("#container").html(temp);  
}

firstFn();
&#13;
.lDiv, .rDiv{ float: left; width: 30%; padding: 1em; margin: 5%; background: #edeced }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="container">
    <div class="wrapper">1</div>
    <div class="wrapper">2</div>
    <div class="wrapper">3</div>
    <div class="wrapper">4</div>
</div>
&#13;
&#13;
&#13;

在上面的代码中,temp是一个引用2个div(.lDiv.rDiv)的jQuery对象。第一个可以通过temp.eq(0)访问,第二个可以通过temp.eq(1)访问。

$.each函数中,i是当前元素的索引,o是对它的引用。

执行.eq(i % 2)会导致选择左右div,以便您可以添加内容。