1
基本上我有兩個jQuery包裹元素$source
和$target
其中$source
是墊片/佔位符。動畫元素從開始位置到另一個元素的位置
我想動畫$source
到位置$target
。動畫後我正在做$target.replaceWith($source);
我需要能夠做到這一點,不管在哪裏$source
和$target
都在DOM中。有沒有一個jQuery插件/簡單的方法來完成這個?
至於我試圖解決的問題,我有兩個列表,我試圖將最後一個項目從一個列表動畫到另一個列表的開始。
這裏是我的刺吧:
var moveItem = function ($sourceItem, $targetItem, callback, before) {
var targetCord = $targetItem.css('position', 'absolute').offset();
$targetItem.css('position', 'static');
var sourceCord = $sourceItem.position();
$targetItem[before? 'before': 'after']('<li class="shim"></li>');
//diag('Shim Created.');
var $newlyAddedShim = $targetItem[before ? 'prev' : 'next']();
$sourceItem.css('position', 'absolute')
.css({ left: sourceCord.left, top: sourceCord.top })
.animate({ left: targetCord.left, top: targetCord.top }, 'slow', function() {
$newlyAddedShim.replaceWith($sourceItem.css('position', 'static'));
callback();
});
};
如果一個通用的解決方案是不可能的,這是標記結構我不得不在那裏$source
和$target
是li
不同ul
:
div.row > div.col > ul > li
div.col > ul > li
(每個相鄰的相關列表位於它自己的div.col中;位置被繼承爲靜態)
我希望能夠做到: $source.animateTo($target)
這實際上依賴於HTML/CSS標記,因爲位置屬性與此問題極其相關。雖然我認爲這種方法存在一些奇怪的方法,但是他們需要很多難看的DOM操作。 – Ennui
@Ennui編輯問題以包含我的標記結構/約束。 –