#jquery
#jquery
Вопрос:
Итак, я хочу установить пару переменных (наборов данных) в тег body, но когда я объединяю их в объект, имена переменных не работают.
// код
var1 = 'data-var1'
var2 = 'data-var2'
var3 = 'data-var3'
$('body').attr({
var1 : 1,
var2 : 2,
var3 : 3
});
// результат после
<body var1="1" var2="2" var3="3">
Комментарии:
1. Имена свойств в литерале объекта являются литералами, а не переменными.
2. С объектной нотацией JavaScript
{foo: 'bar'}
и{'foo': 'bar'}
являются точно таким же объектом.3. Попробуйте
{ "data-var1": 1, ... }
. Также ознакомьтесь с jQuery.data()
для работы с атрибутами данных.
Ответ №1:
Как указывалось в некоторых комментариях в ваших собственных вопросах, левая часть объявления свойства объекта является именем всего свойства и не может быть переменной.
Если вы хотите достичь этого результата, вам нужно реорганизовать свой код, чтобы:
var var1 = "data-var1";
...
var attributes = {};
attributes[var1] = 1; // <-- You can use variables to add properties
// after object literal declaration!
...
$(body).attr(attributes);
Ответ №2:
Вы не можете использовать для этого литерал объекта, потому что имена свойств обрабатываются буквально. Используйте форму с двумя аргументами:
$('body').attr(var1, 1).attr(var2, 2).attr(var3, 3);