Jump to content
  • 0

Использование переменных в функции с animate


Arinden
 Share

Question

Всем доброго дня! Остро встал вопрос о необходимости использования переменной для .animate в JQuery, а именно:


$(".block").click(function(){
var y = '"top"';
$(".block").animate({y: "+=200"}, "fast");
});

Вышеуказанный код не работает. Если "y" заменить на "top" - работает, но мне нужна переменная. Пробовал разные варианты и не получается. Требуется ваша помощь, дайте наводку пожалуйста.

Edited by Arinden
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

А просто лишнюю пару кавычек убрать недостаточно?

Почему-то не работает. Я слабо понимаю JQuery и JavaScript в целом, но по моей логике как раз-таки должно работать. Не могу придумать причину по которой не работает. Возможно переменная передаёт значение как текст, а не как свойство?...

Вот так работает: http://jsfiddle.net/XgZxs/20/

Слегка отредактировал с применением кода от alexriz. Но я не понимаю, что он делает. Господа, вы не могли бы объяснить "на пальцах", для чего нужно:


var x = {};
x[y] = '+=200';

и почему после этого я могу исключить скобки {} в animate и самое главное!! почему оно начинает работать?..

Edited by Arinden
Link to comment
Share on other sites

  • 0

А просто лишнюю пару кавычек убрать недостаточно?

Почему-то не работает. Я слабо понимаю JQuery и JavaScript в целом, но по моей логике как раз-таки должно работать. Не могу придумать причину по которой не работает. Возможно переменная передаёт значение как текст, а не как свойство?...

Вот так работает: http://jsfiddle.net/XgZxs/20/

Слегка отредактировал с применением кода от alexriz. Но я не понимаю, что он делает. Господа, вы не могли бы объяснить "на пальцах", для чего нужно:


var x = {};
x[y] = '+=200';

и почему после этого я могу исключить скобки {} в animate и самое главное!! почему оно начинает работать?..

потому что первым параметром в функцию animate передается объект, а массив в js это тоже объект ))

чтоб стало понятно:

 
$(".block").click(function(){
var y = {};
y.top = "+=200";
$(".block").animate(y, "fast");
});

Edited by wwt
Link to comment
Share on other sites

  • 0

Так мы конструируем объект прямо в аргументе функции:


$('.block').animate({
top : '+=200'
}, "fast");

Все что в {} скобках это объект, мы его можем инициализировать и вне аргумента функции, а в функцию передать уже только переменную содержащую объект:


var obj = { // инициализируем объект
top : '+=200'
}
$('.block').animate(obj, "fast");

Мы не можем просто так взять и вместо top, в примере выше, подставить переменную и тем самым менять свойство, но мы можем инициализировать, например, пустой объект и создать в нем свойство top:


var obj = {}; // инициализируем пустой объект
obj.top : '+=200'; // создаем свойство top в объекте obj

$('.block').animate(obj, "fast");

Так же объект это своего рода ассоциативный массив, тем самым можем создавать свойства и методы объекта в такой форме, передавая в качестве индекса массива имя свойства:


var obj = {}; // инициализируем пустой объект
obj['top'] : '+=200'; // создаем свойство top в объекте obj

$('.block').animate(obj, "fast");

Из примера выше видим, что 'top' это обычное строковое значение, значит мы можем это значение записывать в другую переменную, и передавать ее в [] скобки:


var obj = {}, // инициализируем пустой объект
attr = 'top'; // переменная со строковым значением имени свойства для объекта
obj[attr] : '+=200'; // создаем свойство top в объекте obj, при помощи доп. переменной

$('.block').animate(obj, "fast");

Таким образом мы получаем возможность передать переменную в объект

  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy