2015-07-16 2 views
0

Моя функциональность основана на форматировании данных с текущей структурой и WS. Мой код получает данные и перестраивается в новой структуре js/jquery. Он отлично работает во всех браузерах и мобильных устройствах, кроме IE. Он не работает ни в одной из версий IE. Данные WS поступают в «обертку», и я снова получаю и устанавливаю его в двух div, которые являются «lDiv» и «rDiv». Код для получения более подробной информации:Массив пуст/не определен в IE

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(); 
+0

это 'firArr = $ (" # container "). Find (". Wrapper ")' ничего не может вернуть? – Hacketo

+1

можете ли вы подготовить jsfiddle для этого? – pinturic

+0

нет в массиве полная вставка данных, но в IE во время цикла он будет null или undefined, он отображается в IE «0» внутри цикла for – Anup

ответ

2

IE, похоже, не имеет ссылки на ваши элементы после удаления их из DOM. Используйте временный контейнер для решения этой проблемы:

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();
.lDiv, .rDiv{ float: left; width: 30%; padding: 1em; margin: 5%; background: #edeced }
<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>

В приведенном выше коде, temp является JQuery объекта, который ссылается 2 дивы (.lDiv и .rDiv). Первый из них можно получить, выполнив temp.eq(0), а второй - по temp.eq(1).

В функции $.each, i является индексом текущего элемента, o является ссылкой на него.

Выполнение .eq(i % 2) приведет также к выбору левого и правого div, чтобы вы могли добавлять к нему материал.

+0

работает в IE и многое другое за эффективный и быстрый ответ blex. Я хочу знать одно, как назначать значения в ldiv и rdiv, это для меня как волшебство. – Anup

+1

Рад помочь, @Anup. Был ли у вас комментарий? Я добавил несколько объяснений. – blex

+0

Я не могу добавить больше, чем один плюс, иначе я буду, большое спасибо за описание – Anup

Смежные вопросы