2014-03-28 40 views
3

你好我的HTML結構如下圖所示第四個孩子用jQuery設定在第一位置

<ul> 
    <li class="inner_m">first</li> 
    <li class="inner_m">second</li> 
    <li class="inner_m">third</li> 
    <li class="inner_m">fourth</li> 
</ul> 

現在我將如何通過jQuery的設置此結構像下面

<ul> 
    <li class="inner_m">fourth</li> 
    <li class="inner_m">first</li> 
    <li class="inner_m">second</li> 
    <li class="inner_m">third</li> 
</ul> 
+0

它總是第四個還是你的意思是最後一個兄弟姐妹? –

+0

它可以是任何孩子喜歡某個時間第二個孩子以上某個時間第三個 –

回答

1

要向下移動所有的兄弟姐妹和包裹最後一上來:

$('li:last-child').each(function() { 
    $(this).prependTo(this.parentNode); 
}); 

Demo

您也可以在這裏使用$('li:nth-child(4)'),但:last-child在您的情況碰巧是一回事。

我在這裏使用.each()的原因是因爲如果您有多個<ul>塊,那麼這樣做會使它一致地工作。

或者用普通的JavaScript:

[].forEach.call(document.querySelectorAll('li:last-child'), function(node) { 
    node.parentNode.insertBefore(node, node.parentNode.firstChild); 
}); 
+0

@Riturajratan是的,所以你可以使用'$('li:eq(whatever)')'選擇你需要移動到第一個地方的兄弟'li:last-child'' :) –

+0

是的,我做過我只想提示你給予的歡呼:) –

1

您可以使用.eq(3)選擇第四個元素然後用.prepend()在第一position.try這個附加:

$("ul").prepend($(".inner_m:eq(3)")); 

Working Demo

1

使用前置() jQuery中

$("ul li:eq(3)").remove(); 
$("ul").prepend("<li class='inner_m'>fourth</li>"); 

Fiddle

$('li:last-child').prependTo('ul'); 
0

可以使用before()方法爲。

$('li:eq(0)').before($('li:eq(3)')); 

Demo

0

試試這個:

$(document).ready(function(){ 
    $this= $('.inner_m:eq(3)'); 
    $this.insertBefore($this.siblings(':eq(0)')); 
}); 

DEMO

0
$(document).ready(function() { 
    $li_fo = $('li').eq(3); 
    $li_fo.prependTo('ul'); 
}); 
+1

你可以添加一個描述嗎?你的回答目前不完整。 – bjb568

0

使用前置方法this.here是你的問題的解決方案。

$('li:last-child').each(function() { 
$(this).prependTo(this.parentNode); 
}); 

http://jsfiddle.net/S96qP/