2016-09-27 69 views
0

我有這樣的代碼:JQuery的排序,更改HTML代碼

<div> 

<div class="row"> 
    <div class="cell"> 
    <h3 class="value">string4</h3> 
    </div> 
    <div class="cell"> 
    <h3 class="value">string6</h3> 
    </div> 
</div> 

<div class="row"> 
    <div class="cell"> 
     <h3 class="value">string1</h3> 
    </div> 
    <div class="cell"> 
     <h3>string3</h3> 
    </div> 
</div> 

<div class="row"> 
    <div class="cell"> 
     <h3 class="value">string2</h3> 
    </div> 
    <div class="cell"> 
     <h3 class="value">string5</h3> 
    </div> 
</div> 
</div> 

我需要一個jQuery功能排序,然後將這些「終端」的div到正確的「容器」股利。

輸出應該是:

<div> 

<div class="row"> 
    <div class="cell"> 
    <h3 class="value">string1</h3> 
    </div> 
    <div class="cell"> 
    <h3 class="value">string2</h3> 
    </div> 
</div> 

<div class="row"> 
    <div class="cell"> 
     <h3 class="value">string3</h3> 
    </div> 
    <div class="cell"> 
     <h3 class="value">string4</h3> 
    </div> 
</div> 

<div class="row"> 
    <div class="cell"> 
     <h3 class="value">string5</h3> 
    </div> 
    <div class="cell"> 
     <h3 class="value">string6</h3> 
    </div> 
</div> 
</div> 

我嘗試了很多在這裏的代碼和最近的結果我得到的是這個:

$('.row').sort(function (a, b) { 
    return $(a).find('.value').text() > $(b).find('.value').text(); 
}).each(function (_, container) { 
    $(container).parent().append(container); 
}); 

但如果不命令裏面的元素每個容器。 順便說一句,請解釋一下,jquery腳本,我不能完全理解它做了什麼。

謝謝!

+0

您好,我有解決的主要問題是爲了與此代碼這些細胞 VAR下令= $(「細胞」)排序(函數(一,。 ()。$(b).find('。value')。text() } var allRows = $('。')。行'); var index = 0; for(var i = 0; i Nestoter

+0

明白了,我必須更改排序條件: var ordered = $('。cell')。sort(function(a,b){alias} var alc = $(a).find('。value')。text()。toLowerCase ); blc = $(b).find('。value')。text()。toLowerCase(); return alc> blc?1:alc Nestoter

回答

0

這爲我工作:

 var ordered=$('.cell').sort(function (a, b) { 
      var alc = $(a).find('.value').text().toLowerCase(), blc = $(b).find('.value').text().toLowerCase(); 
      return alc > blc ? 1 : alc < blc ? -1 : 0; 
     }); 

     var theRows=$('.row'); 

     var index=0; 
     for(var i=0;i<=theRows.length;i++){ 

      $(theRows[i]).append(ordered[index]); 
      index++; 

      $(theRows[i]).append(ordered[index]); 
      index++; 
     };