2016-04-26 4 views
0

Aus Gründen der Formatierung versuche ich jedes dritte Ergebnis aus meiner JSON-Datei verschachteln zu verschachteln in einer Div-Klasse "Zeile".Wie verhindert man automatische Tag-Schließung in jQuery append()?

Ich dachte, das wäre eine einfache Sache zu tun, aber jedes Mal, wenn ich versuche, schließt jQuery meine Tags.

Proper Layout sollte

<div class="row"> 
    <div class="four columns"></div> 
    <div class="four columns"></div> 
    <div class="four columns"></div> 
</div> 

sein Hier ist mein Code:

var sexIcon = ''; 
var typeIcon = ''; 
var divClassRow = ' <div class="row"> '; 
var divClassRowEnd = ' </div><div class="row"> '; 
$(document).ready(function(){ 

    $.getJSON("scripts/pets.json", function(jsonData){ 
     $.each(jsonData, function(object, value){ 
      if (value.sex=='female'){ 
       sexIcon = 'images/female-active.png'; 
      } 
      else { 
       sexIcon = 'images/male-active.png'; 
      }; 
      if (value.type=='dog'){ 
       typeIcon = 'images/dog-sm.png'; 
      } 
      else { 
       typeIcon = 'images/cat.png'; 
      } 
      $('.columns:first-child').before(divClassRow); 
      $.each($('.columns:nth-child(4n)'), function(){ 
       $(this).after(divClassRowEnd); 
      }); 


      $(".cards").append(

       '<div class="four columns '+ value.type +' '+ value.sex +' '+ value.size +'">'+ 
       '<div class="card-header"><h3>'+value.name+'</h3><img src="'+typeIcon+'" alt=""><img src="'+sexIcon+'" alt=""></div>'+ 
       '<div class="card-content">'+ 
       '<img src="'+value.photo+'" alt="">'+ 
       '<p><b>Breed:</b> '+value.breed+'</p>'+ 
       '<p><b>Sex:</b> '+value.sex+'</p>'+ 
       '<p><b>Age:</b> '+value.age+'</p>'+ 
       '<p><b>Time at Rescue:</b> '+value.time+'</p>'+ 
       '<p> '+value.about+'</p>'+ 
       '<br>'+ 
       '<button class="button-primary u-full-width">Find Out more!</button>'+ 
       '</div></div>' 

       ); /*END APPEND*/ 
     });/*END EACH*/ 
    });/*END GETJSON*/ 


}); /* Document Ready */ 

Alle Ideen, was ich tun kann? Oder vielleicht, wie man das besser macht.

+0

Was ist aktuelles Ergebnis? Kannst du ein Stacksnippets oder Jsfiddle http://jsfiddle.net zum Demonstrieren erstellen? Versucht, nach Abschluss des ersten '$ .each()' '' '.each()' aufzurufen? – guest271314

Antwort

0

Verwenden wrapAll()

var list=$('.four'); 
for(var i = 0; i < list.length; i+=4) { 
    list.slice(i, i+4).wrapAll("<div class='row'></div>"); 
} 

demo

+0

für mehr Lösung besuchen Sie http://StackOverflow.com/q/3366529/4613398 – madalinivascu

+0

Dies funktionierte perfekt! Vielen Dank! : D –