2016-07-20 9 views
-1

私は正常に動作ソート・リストのUL->異なるIDの機能中のLi

What is the easiest way to order a <UL>/<OL> in jQuery?

から来ました。

しかし、これは異なるIDで必要なので、関数に入れようとしました。

私が試した:

var sortmenues = ['#firstid', '#secondid', '#anotherid']; 

function sortuls(paths) { 
    jQuery.each(paths,function(index, value) { 
     var items = jQuery(value).get(); 
     items.sort(function(a,b){ 
      var keyA = jQuery(a).text(); 
      var keyB = jQuery(b).text(); 

      if (keyA < keyB) return -1; 
      if (keyA > keyB) return 1; 
      return 0; 
     }); 
     var ul = jQuery(value); 
     jQuery.each(items, function(i, li){ 
      ul.append(li); 
     }); 
    }); 
} 

jQuery(function() { 
    sortuls(sortmenues); 
}); 

をしかし、私はちょうど配列の最初の要素のため、動作しません。

スニペットを複製しようとしましたが、最初の要素でも動作します。以下のような

var items = jQuery('#firstid li').get(); 
... 
var ul = jQuery('#firstid'); 
... 
}); 
var items = jQuery('#secondid li').get(); 
... 
var ul = jQuery('#secondid'); 
... 
}); 

も、これはすべての要素のために動作しません:

jQuery.each([ '#firstid', '#secondid' ], function(index, value) { 
    var items = jQuery(value + ' li').get(); 

    items.sort(function(a,b){ 
     var keyA = jQuery(a).text(); 
     var keyB = jQuery(b).text(); 

     if (keyA < keyB) return -1; 
     if (keyA > keyB) return 1; 
     return 0; 
    }); 
    var ul = jQuery(value); 
    jQuery.each(items, function(i, li){ 
     ul.append(value + 'li'); 
    }); 
}); 

は、誰かが私に教えてくださいすることができ、私が間違っているのでしょうか?

htmlが

... 
<ul id="firstid"> 
    <li>Alpha</li> 
    <li>Beta</li> 
    <li>Gamma</li> 
    <li>Delta</li> 
</ul> 
... 
<ul id="anotheridNosortinghere"> 
    <li>Alphaa</li> 
    <li>Betaa</li> 
    <li>Gammaa</li> 
    <li>Deltaa</li> 
</ul> 
... 
<ul id="secondid"> 
    <li>Alphaa</li> 
    <li>Betaa</li> 
    <li>Gammaa</li> 
    <li>Deltaa</li> 
</ul> 
... 
+1

:これを試してみてください。 –

+0

完了、忘れてしまいました – heiko813

答えて

0

は、あなたがちょうどあなたが行くように彼らのテキスト値によって子li要素をソートし、あなたが提供する各ulのためのセレクタによる単純なループを行うことができ、あなたのHTMLを与えられています。あなたが質問に、あなたのHTMLを追加してもらえ

$('#firstid, #secondid').each(function() { 
 
    $(this).find('li').sort(function(a, b) { 
 
    \t return $(a).text() < $(b).text() ? -1 : 1; 
 
    }).appendTo(this); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="firstid"> 
 
    <li>Delta</li> 
 
    <li>Beta</li> 
 
    <li>Alpha</li> 
 
    <li>Gamma</li> 
 
</ul> 
 

 
<ul id="anotheridNosortinghere"> 
 
    <li>Deltaa</li> 
 
    <li>Gammaa</li> 
 
    <li>Alphaa</li> 
 
    <li>Betaa</li> 
 
</ul> 
 
^ Not sorted 
 

 
<ul id="secondid"> 
 
    <li>Betaa</li> 
 
    <li>Alphaa</li> 
 
    <li>Deltaa</li> 
 
    <li>Gammaa</li> 
 
</ul>

+0

YESSIR、これは私が探しているものです。 私の大きな問題は "ul.append(li);" ".appendTo(this);"の代わりに " あなたは私を大いに助けました! – heiko813

+0

問題ありません。それが助けられたら答えを受け入れることを忘れないでください –

関連する問題