Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将元素从起始位置设置为另一个元素位置的动画_Javascript_Jquery_Html - Fatal编程技术网

Javascript 将元素从起始位置设置为另一个元素位置的动画

Javascript 将元素从起始位置设置为另一个元素位置的动画,javascript,jquery,html,Javascript,Jquery,Html,基本上,我有两个jQuery包装的元素$source和$target,其中$source是一个垫片/占位符 我想将$source动画设置到$target的位置。在动画之后,我正在做一个$target.replaceWith($source) 无论$source和$target在DOM中的什么位置,我都需要能够做到这一点。有没有jQuery插件/简单的方法来实现这一点 至于我试图解决的问题,我有两个列表,我试图将最后一项从一个列表动画到另一个列表的开头 以下是我的尝试: var moveItem

基本上,我有两个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();
            });
    };
(每个相邻的相关列表都位于其自己的div.col中;位置作为静态继承)

我希望能够做到:
$source.animateTo($target)
使用jQuery的$.offset函数

如果不应该这样做,请在设置动画之前尝试将#element设置为动画位置的绝对右侧

$('#elementToAnimate').css('position', 'absolute');

使用jQuery的$.offset函数

如果不应该这样做,请在设置动画之前尝试将#element设置为动画位置的绝对右侧

$('#elementToAnimate').css('position', 'absolute');

这实际上取决于HTML/CSS标记,因为position属性与此问题极为相关。虽然我认为有很多方法可以解决这个问题,但它们需要大量丑陋的DOM操作。@Ennui编辑的问题包括我的标记结构/约束。这实际上取决于HTML/CSS标记,因为position属性与这个问题极为相关。虽然我认为有一些黑客的方法可以解决这个问题,但它们需要大量丑陋的DOM操作。@Ennui编辑了这个问题,以包括我的标记结构/约束。
$('#elementToAnimate').css('position', 'absolute');