анимация не выполняется после того, как свойство установлено в переменную

0

Хотя я пытался создать слайдер, мне нужно сделать это условно, применив marginLeft или marginTop, поэтому я пытался взять его из возвращаемого значения переменной.

Но я погрузился в проблему, и после того, как много борьбы обнаружило, в чем проблема ===> Я не могу принять значение переменной для метода jQuery. Сначала я подумал, что var something = 'margin-left'; не будет работать, поскольку {margin-left :...} не работает без цитаты и поэтому попробовал его с marginLeft как в примере ниже:

Это работает:

$(selector).click(function(){
    $(element).animate({
        marginLeft: '-=600'

Это также работает:

$(selector).click(function(){
var toLeft = '-=600';
    $(element).animate({
        marginLeft: toLeft

Но почему не это? :

$(selector).click(function(){
var move = 'marginLeft';
    $(element).animate({
        move: '-=600'

см. эту нерабочую демонстрацию

Ха! Невозможно присвоить присвоение свойства переменной jQuery для использования в методе {property: value}?

Как я могу заставить его работать? Или это ошибка?

Теги:

1 ответ

2
Лучший ответ

Когда вы создаете объект в этом синтаксисе,

{
    property: value
}

имя свойства не может быть переменной. Само название, которое вы используете здесь, будет именем свойства. В твоем случае:

var move = 'marginLeft';
    $(element).animate({
        move: '-=600'

свойство называется "move", а не "marginLeft".

Чтобы достичь того, чего вы хотите, сделайте следующее:

var move = 'marginLeft';
var options = {};
options[move] = '-=20';
$(element).animate(options);

И вот вот твоя рабочая демонстрация.

  • 0
    большое спасибо....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню