同様の質問に対する多くの回答を見てきましたが、私の特定のケースではこれを理解できないようです。私の jQuery ロジックは、.each()
関数の最後の要素にのみ適用されます。誰かが理由を理解するのを手伝ってくれますか? 最終的に、リスト内の項目を 2 つの列に分割しようとしています。
HTMLは次のとおりです。
<ul class="sub-menu">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
<li>item 6</li>
<li>item 7</li>
<li>item 8</li>
</ul>
<ul class="sub-menu">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
<li>item 6</li>
<li>item 7</li>
<li>item 8</li>
</ul>
<ul class="sub-menu">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
<li>item 6</li>
<li>item 7</li>
<li>item 8</li>
</ul>
そして、ここに私のjQueryがあります
<script type="text/javascript">
jQuery(document).ready(function(){
var col1 = jQuery('<li class="col1">col1</li>'); // object which I will append the list items into
var col2 = jQuery('<li class="col2">col2</li>'); // object which I will append the list items into
jQuery('.sub-menu').each(function() {
var items = jQuery(this).html(); // get original items from list
jQuery(this).empty(); // clear original items from list
jQuery(this).append(col1).append(col2); // just appending new columns for now, will add the original items to either col1 or col2 once this is working.
});
});
</script>
私のコードは元のリスト項目を適切にキャプチャし、現在のリストをクリアしますが、リストへの列の追加はループ.sub-menu
の最後の要素に対してのみ行われます。.each()
つまり、2 つの列は最後に追加されるだけ.sub-menu
で、最初の 2 つの列にはリスト項目がありません。
アイデア?