段落

2011-11-17 95 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