セレクターに一致する要素が含まれるように、nextUntil を簡単に実行する方法はありますか? 私はこれを持っていますが、これは前の兄弟がいる場合にのみ問題ありません:
$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
セレクターに一致する要素が含まれるように、nextUntil を簡単に実行する方法はありますか? 私はこれを持っていますが、これは前の兄弟がいる場合にのみ問題ありません:
$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
以下に示すように、セレクターの最後で を削除.prev()
し、置き換え.nextUntil
て.nextAll
使用します。.addBack()
$("#content").find("h3:first").nextAll("ul:last").addBack().wrapAll("<div id='collapse'></div>");
1.8 より前のバージョンではandSelf
、addBack
私が見つけた回避策は、(または)length
を使用して取得し、次にこの長さ+ 1で使用することでした:nextUntil
prevUntil
slice()
nextAll()
var inclusiveNextUntil = $(this).nextUntil( '.some-class' ).length;
var inclusiveNextUntil = $(this).nextAll().slice( 0 , inclusiveNextUntil + 1 );
不器用ですが、うまくいきます。HTH
次のすべてのドキュメントの Fwiw Biziclop は、次の追加について言及してい+ *
ます。
$obj.nextUntil('.last-item-to-include + *')
しかし、これは私にはうまくいきません:/
これが私がすることです。他の提案よりも少しきれいだと思います。
var elearr = $('selector1').nextUntil('selector2');
var lastele = elearr[elearr.length-1];
elearr.push($(lastele).next());
他の人が答えたように、使用.addSelf()
は開始要素を包括的にするための解決策です。
$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");
そして、終了要素を包括的にするために、.nextUntil(".class + *")
メソッドを使用して問題を解決しました。
$("#content").find("h3:first").nextUntil("ul:last + *").addSelf().wrapAll("<div id='collapse'></div>");
私が思うに正解は
$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");