【问题标题】:jquery insertbefore for multiple elementsjquery insertbefore用于多个元素
【发布时间】:2013-06-06 17:17:48
【问题描述】:

我还创建了一个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 部分,因为它也在其他页面上使用。

【问题讨论】:

    标签: jquery jquery-selectors jquery-traversing


    【解决方案1】:

    你可以使用prependTo

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

    Check Fiddle

    【讨论】:

    • 谢谢,这正是我需要的!