2017-04-03 13 views
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>

答えて

2

を管理してきたものである:

.nextUntil('p:contains("--greyend--") + p') 

Fiddle

を参照してください。
+1

これはうまくいきましたが、常に次の要素に依存して 'p'になりました。 .nextUntil( 'p:contains( " - greyend--")+ *') 'の代わりにワイルドカードセレクタを使うことで、 –

関連する問題