Как передать переменную в свойства функции jquery animate?

function SlideObject(Side) {
    $("#div").animate({
        margin+Side: "-1000px",
        opacity: "hide"
    }, 1000);
}

Я хотел бы передать значение для "Side" в имя идентификатора свойства (margin) для функции анимации.

Я знаю, что "margin + Side" недействительно, он просто присутствует как владелец места. Например, если бы я должен был указать имя свойства вручную, это может быть "marginLeft", чтобы назвать один пример. Я хотел бы поставить "Left", "Right", "Top" или "Bottom" в качестве параметра для функции SlideObject.

У меня возникают проблемы, и пример будет замечательным.

Спасибо

Ответ 1

Во-первых, не используйте eval() для этого. Там нет необходимости, и это открывает уязвимость вашего сайта, если вы каким-либо образом используете пользовательский ввод как часть этого (прямо или косвенно). Правильный способ сделать это:

<div id="div">This is a test</div>

с CSS:

#div { padding: 15px; background: yellow; }

и Javascript:

function slideObject(side) {
  var anim = {opacity: 0};
  anim["margin" + side] = "-1000px";
  $("#div").animate(anim, 1000);
}

$(function() {
  slideObject("Left");
});

Вы заметите, что значение opacity изменено на 0. hide не является допустимым значением для opacity.

В основном вы создаете анонимный объект, а затем назначаете динамическое свойство с помощью [].