2

私が望むのは、クラス「splithere」が一致するたびに、ul を 2 つ以上の部分に分割できるようにすることです。次に、各パーツをコンテナーにラップする必要があります。そのようです:

<ul class="someclass">
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li class="splithere">Four</li>
    <li>Five</li>
    <li>Six</li>
    <li class="splithere">Seven</li>
    <li>Eight</li>
    <li>Nine</li>
</ul>

そして、私がこれで終わりにしたいのは:

<ul class="someclass">
    <li class="newclass">
        <ul>
            <li>One</li>
            <li>Two</li>
            <li>Three</li>
        </ul>
    </li>
    <li class="newclass">
        <ul>
            <li class="splithere">Four</li>
            <li>Five</li>
            <li>Six</li>
        </ul>
    </li>
    <li class="newclass">
        <ul>
            <li class="splithere">Seven</li>
            <li>Eight</li>
            <li>Nine</li>
        </ul>
    </li>
</ul>

誰かが私を助けてくれることを願っています...

4

2 に答える 2

1

次のように実行できます。

$(".someclass .splithere, .someclass li:first").each(function() {
    var li = $('<li class="newclass"></li>').insertBefore(this);
    var ul = $("<ul>").appendTo(li);
    $(this).nextUntil(".splithere")
        .add(this)
        .appendTo(ul);
});​

作業例: http://jsfiddle.net/jfriend00/TTRhc/


もう少し単純化しました:

$(".someclass .splithere, .someclass li:first").each(function() {
    var li = $('<li class="newclass"><ul></ul></li>').insertBefore(this);
    $(this).nextUntil(".splithere").add(this).appendTo(li.find("ul"));
});​

作業例: http://jsfiddle.net/jfriend00/bC5J9/

于 2012-09-03T23:36:08.800 に答える
0

次のようなものが必要です。

 $('.splithere').each(function(index){
       var masterIndex=$('ul.someclass li').index(this),
       listObj=$('ul.someclass li:eq(' + masterIndex + ')).add($('ul.someclass li:eq(' + masterIndex +')').nextUntil($('.splithere').eq(index+1)),
       wrapper=$('<li class="newclass"><ul>' + listObj + </ul></li>');
       $('ul.someclass li:eq(' + masterIndex + ')').add($('ul.someclass li:eq(' + masterIndex + ')').nextUntil($('.splithere').eq(index+1)).replaceWith(wrapper);
 })

これが行うことは次のとおりです。 1. マスター インデックス、つまりリスト内のこのリスト項目のインデックスを取得します 2. この分割を含むオブジェクト (listObj) を作成し、ここで次の分割までリスト項目を作成し、それらを ul でラップします3. 元のリスト項目とその兄弟を新しい dom 構造に置き換えます

私はそれをテストしていませんが、これはうまくいくはずです。

于 2012-09-03T23:41:56.307 に答える