Я использую следующие строки для хранения местоположения объекта.

var lightboxTop = $('#lightbox').css('top');
var lightboxLeft = $('#lightbox').css('left');

Я последовательно перемещаю этот объект в своем элементе и хочу восстановить его предыдущую позицию с сохраненными переменными.

Но, боюсь, javascript сохраняет значения по ссылке, поэтому я теряю начальные позиции. Я прав ? Как я могу решить это?

Благодарность

3
aneuryzm 1 Июн 2010 в 23:12

4 ответа

Лучший ответ

Нет, эти возвращенные значения не сохраняются по ссылке. Если вы измените стиль top и left элемента, это не повлияет на ваши сохраненные значения.

Примитивные типы в javascript не передаются по ссылке.

    var a = "a";

    var b = a;

    a = "c";

    alert(b);  // alerts "a"
    alert(a); // alerts "c"

Или

    var a = 1;

    var b = a;

    a = 3;

    alert(b);  // alerts "1"
    alert(a); // alerts "3"

Объекты передаются по ссылке:

    var a = {one:"one"};

    var b = a;

    a.one = "three";

    alert(b.one);  // alerts "three"
    alert(a.one); // alerts "three"
1
user113716 1 Июн 2010 в 19:26

Javascript не поддерживает «по ссылке».

var a = 1; // a is 1
var b = a; // b is set to the value of a, that is, 1
a = 2; // a is set to 2, b is still 1

Единственный способ передать «ссылки» - это поделиться объектом, свойство которого является переменной

var props = {};
props.a = 1;
var newprops = props; // props === newprops = true, both variables point to the same reference
newprops.a // is 1
props.a = 3;
newprops.a // is 3

И что произойдет, если мы заменим одну из переменных, указывающих на ссылку на объект?

props = {}; // props === newprops = true, props is set to a NEW object, newprops still points to the old one
props.a = 2; // is 2
newprops.a; // is still 3
1
Sean Kinsey 1 Июн 2010 в 19:25

Вы можете попробовать метод jQuery.clone (), например так:

var l = $('#lightbox');
var start = l.clone().hide();

Затем переместите l вокруг, затем удалите его и снова отобразите start.

0
cji 1 Июн 2010 в 19:29

В этом случае это не сохранение какой-либо ссылки, а фактическое значение.

3
CharlesLeaf 1 Июн 2010 в 19:14