1
私はいくつかのhtmlを持っており、divでいくつかの要素を折り返したいと思っています。jquery nextUntil一致する要素を含む
最終結果は--greystart--
から--greyend--
までがdiv
にラップされ、一致する要素自体が含まれている必要があります。
私は.addBack()
と.addSelf()
を見てきましたが、正しく動作するようなものは得られません。これは、ちょうど隣にある<p>
が含まれるように隣接兄弟セレクタを使用し、私は
if($('.event_description:contains("--greystart--")')) {
$('p:contains("--greystart--")').each(function(i){
$(this)
.nextUntil('p:contains("--greyend--")')
.addBack()
.wrapAll('<div class="bg--grey" />')
});
};
.bg--grey {background: red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="event_description">
<p>--greystart--</p>
<p>saddasdsa</p>
<p>dsadasdsa</p>
<p>fdfdfsfds</p>
<p>dfsdffdsfds</p>
<p>--greyend--</p>
<p>dfdsfdsf</p>
<p>--greystart--</p>
<p>saddasdsa</p>
<p>dsadasdsa</p>
<p>fdfdfsfds</p>
<p>dfsdffdsfds</p>
<p>--greyend--</p>
<p>dfdsf</p>
<p>--greystart--</p>
<p>saddasdsa</p>
<p>dsadasdsa</p>
<p>fdfdfsfds</p>
<p>dfsdffdsfds</p>
<p>--greyend--</p>
<p>fdfdsdsf</p>
<p>--greystart--</p>
<p>saddasdsa</p>
<p>dsadasdsa</p>
<p>fdfdfsfds</p>
<p>dfsdffdsfds</p>
<p>--greyend--</p>
</div>
これはうまくいきましたが、常に次の要素に依存して 'p'になりました。 .nextUntil( 'p:contains( " - greyend--")+ *') 'の代わりにワイルドカードセレクタを使うことで、 –