5

私はstackoverflowのメンバーによって提案され、メガメニューの一部として3つのリストアイテムごとにラップするように調整されたコードを少し使用しています。コードは次のとおりです。

var lis = $("ul > li");
for(var i = 0; i < ls.length; i+=3) {
  lis.slice(i, i+3).wrapAll("<div class='new'></div>");
}

残念ながら、これは次の親メニューから子liを取得して、div内の3liの「クォータ」を埋めます。もちろん、これは私のメニューを大いに台無しにしています。例については、こちらをご覧ください。

誰かが私がこれを修正する方法について何か提案がありますか?

4

2 に答える 2

6

あなたの問題はあなたのセレクターです。sizzle右から左に機能するため、直接の親として持つすべてのクエリを実行します(LI elements通常UL elementは常にそうです)。

だから、あなたのを分離しますULs

$('ul').each(function(){
   var $lis = $(this).children('li');
   for(var i = 0, len = $lis.length; i < len; i+=3){          
     $lis.slice(i, i+3).wrapAll("<div class='new'></div>");
  }
});
于 2010-08-02T06:33:24.423 に答える
0

このようなhtセレクターとしてクラスを使用して適用してみましたか?

var lis = $("ul.list-content > li");
for(var i = 0; i < lis.length; i+=3) {
  lis.slice(i, i+3).wrapAll("<div class='new'></div>");
}

しかし、あなたが知らなかった場合、私はあなたがdomを壊していることを警告しています..あなたは良くないulにdivを置いています..;)

于 2010-08-02T06:28:55.587 に答える