前提・実現したいこと
jQueryを用いて、DOMの順番を操作し、再出力したい。
該当のソースコード
HTML
1<ul id='myList'> 2 <li>山田</li> 3 <li>鈴木</li> 4 <li>田中</li> 5 <li>上田</li> 6 <li>伊藤</li> 7</ul>
jQuery
1$("#myList").one("click", function() { 2 //ソートを行う 3 var $arr = $('ul#myList li').sort(function(a, b) { 4 return ($(a).text() > $(b).text() ? 1 : -1); //ソート条件 5 }); 6 7 //空にする 8 $("#myList").empty(); 9 10 //追加する 11 $arr.each(function() { 12 var myObj = $(this).text(); 13 $('#myList').append('<li>' + myObj + '</li>'); 14 }); 15 16});
実行した結果
以下のように、なぜか3つずつ要素が生成されてしまいます。
HTML
1<ul id="myList"> 2 <li>上田</li> 3 <li>上田</li> 4 <li>上田</li> 5 <li>伊藤</li> 6 <li>伊藤</li> 7 <li>伊藤</li> 8 <li>山田</li> 9 <li>山田</li> 10 <li>山田</li> 11 <li>田中</li> 12 <li>田中</li> 13 <li>田中</li> 14 <li>鈴木</li> 15 <li>鈴木</li> 16 <li>鈴木</li> 17</ul>
もちろん理想となる結果は、以下です。
HTML
1<ul id="myList"> 2 <li>上田</li> 3 <li>伊藤</li> 4 <li>山田</li> 5 <li>田中</li> 6 <li>鈴木</li> 7</ul>
ループの回し方に問題があるのでしょうか。
解決案とあわせて、理由もご教授いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー