nextUntilを簡単に実行する方法があるので、セレクタに一致する要素が含まれていますか?当然のjQuery nextUntil(一致する要素を除外しないことを含む)?
$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
nextUntilを簡単に実行する方法があるので、セレクタに一致する要素が含まれていますか?当然のjQuery nextUntil(一致する要素を除外しないことを含む)?
$("#content").find("h3:first").prev().nextUntil("ul:last").wrapAll("<div id='collapse'></div>");
.prev()
を削除し、以下に示すように、あなたのセレクタの終わりに.addBack()
を使用します。
$("#content").find("h3:first").nextUntil("ul:last").addBack().wrapAll("<div id='collapse'></div>");
事前1.8 andSelf
代わりのaddBack
あなたは、単にjQueryのnextAll使用することができます:私は前の兄弟がある場合にのみ、罰金である、これを持っています。
'nextAll'には、そのセレクタに一致する以下の要素が含まれます。
'nextUntil'は一致するセレクタ要素を除外します。
"next"はただ1つの兄弟を取得しますが、定義されたエンドポイントまですべての兄弟を取得します。 – jwinn
はい、あなたは正しいです、私の答えを変えてください。 –
-1:from nextAll()ref:一致した要素のセット内の各要素のすべての** following **兄弟を取得します。オプションでセレクタによってフィルタリングされます。したがって、これには一致した要素が含まれません**。 –
私が見つけたこの問題を回避するには、length
使用してnextUntil
(またはprevUntil
)、その後、nextAll()
にこの長さ+ 1でslice()
を使用取得することでした:
var inclusiveNextUntil = $(this).nextUntil('.some-class').length;
var inclusiveNextUntil = $(this).nextAll().slice(0 , inclusiveNextUntil + 1);
それは不器用だが、それが動作します。 HTH
FWIW in the nextAll docs Biziclop mentions+ *
を追加:
$obj.nextUntil('.last-item-to-include + *')
が、これは私のために動作しません:/
は、ここで私は何をすべきかです。私はそれが他の提案より少しきれいだと思う。
var elearr = $('selector1').nextUntil('selector2');
var lastele = elearr[elearr.length-1];
elearr.push($(lastele).next());
var s = $("li.start").nextUntil("li.stop");
s = s.add(s.last().next()).add(s.first().prev());
//and do whatever you need to with s
最も直感的に使用する必要があり、私は思います。すべてjQueryメソッドで作成されています。 2回検索する必要はありません。理解しやすく、覚えやすい。
私はあなたのHTMLマークアップの関連部分を持つあなたの質問を更新することができ、正しい答えは
$("#content").find("h3:first").nextUntil("ul:last").addSelf().wrapAll("<div id='collapse'></div>");
あると思いますか?これは、あなたが達成しようとしていることを理解するのに役立ちます。 –