我需要改变元素的水平位置。为此,我使用left
更改其.css('left', value)
属性。如果没有定义left
值,那么这将使元素相对于它应该移动的位置。
现在我需要重新计算将元素移动到其他位置的位置,为此,如果我没有更改其left
属性,我需要元素所在的位置。
我可以移除left
值并询问它的位置但是元素也会移动并且想避免这种情况,因为我可能会让元素在位置之间跳转。
我怎样才能得到元素所在的位置?
答案 0 :(得分:1)
一种方法是在DOM-ready上读取元素的默认左值,并将其作为元素的data-*
属性添加到元素中 - 让我们将其称为data-default-left
或类似的东西。然后,当您需要进一步的默认值时,您可以始终引用该值。
使用jQuery的.data()
方法可以轻松使用data-*
。
答案 1 :(得分:1)
如果多次更改left
样式,则元素不会在位置之间跳转。只要您的函数正在运行,浏览器中就没有更新。您可以安全地重置left
样式,获取位置,然后设置新的left
值。
答案 2 :(得分:0)
将左侧设置为0,重新计算并将左侧设置为新位置将是您案例中最简单的更改。根据我的经验,浏览器不会在css更新之间重新绘制。
其他一些选择:
使用绝对定位而不是相对定位。然后你的起源是一致的。
使用jQuery UI position plugin。它允许您设置元素相对于另一个元素的位置。非常有用。
答案 3 :(得分:0)
如何在开始移动之前使用.data()
存储此信息?那么你每次需要的时候都会把它收回来。
答案 4 :(得分:0)
简单。将初始左侧数量存储在dom加载的变量中,然后在进行其他计算时引用它:
$(function () {
var $element = $("#ME_ELEMENT_ID");
var initialLeft = $element.offset().left;
// Change your left here
$element.css('left', '200px');
// initialLeft still contains the old value
});