2013-06-06 2 views
2

Я также создал jsfiddle, чтобы продемонстрировать свою проблему.jquery insertbefore для нескольких элементов

Мне нужно иметь время перед заголовком.

<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

Вы можете использовать prependTo

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

Check Fiddle

+0

Спасибо, это именно то, что мне нужно! – user2458806

+0

Рад помочь? :) –

Смежные вопросы