Возможно ли установить пользовательский атрибут функцией jQuery attr() с использованием переменных JS

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

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(). так как они синтаксически различны. если есть какой-то другой способ, пожалуйста, предложите Спасибо.

Ответ 1

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

jQuery('#div').attr(attname,attvalue);

Ответ 2

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

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

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

Ответ 3

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

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

http://jsfiddle.net/each/rnnfk/ - ознакомьтесь с этой демонстрацией

Ответ 4

<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

Ответ 5

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

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

http://jsfiddle.net/KJBHq/