jquery insertbefore用于多个元素

时间:2013-06-06 08:51:58

标签: jquery jquery-selectors jquery-traversing

我还创建了一个jsfiddle来证明我的问题。

我需要有时间在标题之前。

<ul> 
<li>
    <h3>Title 1</h3>        
    <p>Speaker 1</p>        
    <p class="ui-li-aside"><b>Time 1</b></p>    
</li>   
<li>
    <h3>Title 2</h3>        
    <p>Speaker 2</p>        
    <p class="ui-li-aside"><b>Time 2</b></p>    
</li>
 <li>
    <h3>Title 3</h3>        
    <p>Speaker 3</p>        
    <p class="ui-li-aside"><b>Time 3</b></p>    
</li>

这有效:

$("li:nth-child(0) p.ui-li-aside").insertBefore("li:nth-child(0) h3");

但我不想为每个元素都这样做。

这不符合我的要求:

$("li:nth-child(n) p.ui-li-aside").insertBefore("li:nth-child(n) h3");

如何以更短的方式和任何元素编写? 我无法更改html部分,因为它也用于其他页面。

1 个答案:

答案 0 :(得分:1)

您可以使用prependTo

$(document).ready(function () {
    $('li').each(function () {
        var $this = $(this);
        $('p.ui-li-aside', $this).prependTo($this);
    });
});

<强> Check Fiddle