2012-06-25 24 views
0

我想在.content元素之前添加.item元素,但它只是簡單地將.item從之前的位置移除,並追加到.content之前。如何在jQuery中使用.before動畫元素

我想要的是使用一些動畫,從原始位置緩慢移除.item元素,並在其新位置緩慢出現。我該怎麼做?

$Item = $('.item'); 
$('.content').before($Item); 

問候。

+0

@鄰省:將你能夠做出一個的jsfiddle演示鏈接。 – Shakti

+0

http://jsfiddle.net/9gGAT/2/這是我正在嘗試。我想慢慢地從上面的區域隱藏項目,並顯示在緩慢之前。內容 –

回答

0

你的意思是這樣的: jsFiddl Link

+0

你的代碼似乎對我來說很好,因爲它使用了一些動畫..但它沒有使用.before方法..我必須做的才能使它使用.before而不是appendTo –

+0

這就是我想要的。 http://jsfiddle.net/eQEPw/ –

2

怎麼是這樣的:

$Item = $('.item'); 
$Item.fadeOut(1000, function() { 
    $('.content').before($Item); 
    $Item.fadeIn(1000); 
} 

.fadeOut() method消失在指定的時間因素(以毫秒爲單位),並在完成調用函數然後移動元素並將其淡入。

演示:​​

0

試試這個,

$(function() { 

    $('#btnMove').on('click', function() { 
     $Item = $('.item').fadeOut('slow', function() { 
      $('.content').before($Item); 
      $Item.fadeIn('slow'); 
     }) 

     }); 

    });​ 

Demo

1

你也可以使用jQuery的hideshow - 方法來實現滑動效果。我還會將轉換封裝在自己的方法中,以便它可以重用,所以您不必多次編寫相同的代碼。

var smoothLikeSilk = function(mover, before) { 
    $item = $(mover); 
    $content = $(before); 
    $item.hide('slow', function() { 
    $content.before($item); 
    $item.show('slow'); 
    }); 
} 

$(function(){ 

    $('#btnMove').on('click',function(){ 
    smoothLikeSilk('.item', '.content'); 
    }); 

}); 

http://jsfiddle.net/9gGAT/6/

+0

爲什麼不去整個豬,寫'smoothLikeSilk()'作爲插件?這將是大約相同數量的代碼... – nnnnnn