1

JCarousel を使用して、LI に 8 つの画像 (4 つの行を 2 行) のみを含む UL 要素を表示したいと考えています。
<li>
<div>
[画像][画像][画像][画像]
[画像][画像][画像][画像]
</div>
</li>
<li>
<div>
[画像][画像][画像][画像]
[画像][画像][画像][画像]
</div>
</li>

これを行う良い方法は、次のようafter()にいくつかの終了タグと開始タグを追加するために使用することだと思いました:

$(".jcarousel-item img:nth-child(9)").after(</div></li><li><div>);

after()しかし、開始タグで始まらない限り終了タグを挿入しないように見えるため、 の性質を誤解していると思います。

でこれを行うより良い方法はありwrapInner()ますか?

4

1 に答える 1

1

それで、あなたは単一の画像を含む単一の画像から始めて、それulを一連の に分割したいのですが、それぞれに 8 つの画像が含まれていますよね? もしそうなら、これはうまくいきます:lidivli

var images = $("img");
while (images.length > 8) {
    images.slice(8, 16).appendTo("ul").wrapAll("<li><div></div></li>");
    images = images.slice(16);
}

基本的に、画像のコレクションから 8 つの画像チャンクを切り取りul、それらを独自の に追加します (最初の 8 つの画像でliオリジナルを残します)。li明らかに、ページに他の画像や順序付けられていないリストがあると思われるため、セレクターを調整する必要があります。

編集:期待どおりに機能しない理由を説明するため.afterに-jQueryは生のHTMLではなくDOMを操作しようとしていると思います。したがって、解析して実際の DOM ノードに変換できない限り、HTML のランダムなチャンクを追加することはできません。つまり、渡すコンテンツは.after、それ自体が有効で完全な HTML である必要があります。したがって、jQuery は " </div></li><li><div>" のようなものをノードに変換する方法を見つけられないため、少し奇妙に動作します (この場合、最初の 2 つの終了タグは無視されると思います。所有してからノードを作成しlidiv効果的にそれらを自動的に閉じます)。

于 2009-07-31T01:12:57.177 に答える