Можно ли установить пользовательский атрибут с помощью функции JQuery attr (), используя переменные JS - PullRequest
13 голосов
/ 21 сентября 2011

Я использую стандарт jquery 1.5 и html4.
Я пытаюсь установить пользовательский атрибут, который я получаю по переменной javascript, но это не настройка. Пример кода:

var attname="list1"; // this is changed on every call of the function where it is defined.    
var attvalue="b,c,d"; // this also changed.  
jQuery('#div1').attr({attname:attvalue});

но он считает attname самой строкой, а не переменной. есть и другие варианты, такие как использование data (), prop (), но они поддерживаются в HTML5 и jquery 1.6, что в настоящий момент невозможно для меня. Другая проблема заключается в том, что данные не могут быть установлены на стороне сервера для синхронизации и использованы на на стороне клиента с помощью данных jquery (). поскольку они синтаксически отличаются. если есть какой-то другой способ, пожалуйста, предложите Спасибо.

Ответы [ 5 ]

25 голосов
/ 21 сентября 2011

Я думаю, вы должны использовать это

jQuery('#div').attr(attname,attvalue);
12 голосов
/ 21 сентября 2011

Да, но используйте префикс data-, прежде чем избежать столкновения

$('elm').attr('data-'+attname,attvalue);

Использование префикса data- не требует HTML5.

6 голосов
/ 21 сентября 2011

Да, вы можете добавить любой атрибут, который вы хотите, только будьте осторожны:

$('#foobar').attr('foo','bar'); 

http://jsfiddle.net/each/rnnfk/ - посмотрите это демо

3 голосов
/ 21 сентября 2011
<div data-test="lala">asdf</div>

alert($('div').data('test'));
var t = 'data-test2';
var v = 'hiho';
$('div').attr(t,v);
alert($('div').data('test2'));
alert($('div').attr('data-test2'));

у меня все это работает: http://jsfiddle.net/r7uQ8/ Проверено на jquery 1.4.4

1 голос
/ 21 сентября 2011

Обозначение в квадратных скобках - ваш друг:

var attname = "haha";
jQuery('#div')[0][attname] = "foo";
alert(jQuery('#div')[0][attname]);

http://jsfiddle.net/KJBHq/

...