段落

2011-11-17 133 views
1

後的Jquery wrapAll UL裏我需要改變這樣的:段落

<div id="truc"> 
    <p>First</p> 
     <li>Item one</li> 
     <li>Item two</li> 
     <li>Item three</li> 

    <p>Second</p> 
    <li>Item four</li> 
    <li>Item five</li> 
    <li>Item six</li> 
</div> 

成這樣:

<div id="truc"> 
    <p>First</p> 
    <ul id="list1"> 
     <li>Item one</li> 
     <li>Item two</li> 
     <li>Item three</li> 
    </ul> 

    <p>Second</p> 
    <ul id="list2"> 
     <li>Item four</li> 
     <li>Item five</li> 
     <li>Item six</li> 
    </ul> 
</div> 

我試圖用wrapAll使用jQuery,這樣的事情:

$('#truc p~li').each(function() { 
    $(this).wrapAll('<ul>'); 
}); 

任何建議將非常感激:)非常感謝你!

回答

2

對於特定結構,可以使用以下內容:

$('p', '#truc').each(function() { 
    $(this).nextUntil('p').wrapAll('<ul>'); 
}); 

輸出(demo):

<div id="truc"> 
    <p>First</p> 
    <ul> 
     <li>Item one</li> 
     <li>Item two</li> 
     <li>Item three</li> 
    </ul> 
    <p>Second</p> 
    <ul> 
     <li>Item four</li> 
     <li>Item five</li> 
     <li>Item six</li> 
    </ul> 
</div> 

至於ID,則可以(demo):

$('p', '#truc').each(function(i) { 
    $(this).nextUntil('p').wrapAll($('<ul>', {id: 'list' + (1 + i)})); 
}); 

與原有方法的問題:

$('#truc p~li').each(function() { 
    $(this).wrapAll('<ul>'); 
}); 

是,選擇器#truc p~li符合項目所有<li>元件(未每個<p>元素分組),因此包裝在比賽每個項( <li>元素)與<ul>元素。

+0

非常感謝你,它像一個魅力:) 關心 Fabien – Fabien

+0

@Fabien偉大:)另外,歡迎來到SO。 – jensgram