2017-04-03 43 views
1

我有一些html,我希望用div包裝一些元素。jquery nextUntil包含匹配元素

最終結果應該是從每個--greystart----greyend--將包裝在div中,包括匹配的元素本身。

我看着atusing .addBack().addSelf(),但不能得到任何正常工作。這是我已經成功

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

只需使用相鄰兄弟選擇到包括<p>這是正確的旁邊:

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

Fiddle

+1

Ahh這一直奏效,但依靠下一個元素始終是'p'。我已經包含一個通配符選擇,而不是'p'修改爲我的使用:'.nextUntil(「P:包含(‘ - greyend--’)+ *」)' –

相關問題