18

セレクターに一致する要素が含まれるように、nextUntil を簡単に実行する方法はありますか? 私はこれを持っていますが、これは前の兄弟がいる場合にのみ問題ありません:

$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
4

7 に答える 7

26

以下に示すように、セレクターの最後で を削除.prev()し、置き換え.nextUntil.nextAll使用します。.addBack()

$("#content").find("h3:first").nextAll("ul:last").addBack().wrapAll("<div id='collapse'></div>");

1.8 より前のバージョンではandSelfaddBack

于 2013-02-07T05:11:57.667 に答える
2

私が見つけた回避策は、(または)lengthを使用して取得し、次にこの長さ+ 1で使用することでした:nextUntilprevUntilslice()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 + *')  

しかし、これは私にはうまくいきません:/

于 2012-04-10T12:36:34.153 に答える
1

これが私がすることです。他の提案よりも少しきれいだと思います。

var elearr = $('selector1').nextUntil('selector2');
var lastele = elearr[elearr.length-1];
elearr.push($(lastele).next());
于 2012-06-12T16:17:59.013 に答える
0

他の人が答えたように、使用.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>");
于 2018-06-08T08:55:16.610 に答える
0

私が思うに正解は

$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");
于 2017-05-02T09:55:56.047 に答える
-1

もちろん、jQuery nextAllを使用するだけです。

「nextAll」には、そのセレクターに一致する次の要素が含まれます。

「nextUntil」は、一致するセレクター要素を除外します。

于 2012-03-02T19:35:50.947 に答える