J'utilise jquery 1.5 et html4 standard.
J'essaie de définir un attribut personnalisé que je reçois par une variable javascript, mais il ne s'agit pas de la configuration de l'exemple up.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});
mais il traite attname comme une chaîne elle-même plutôt variable. Il existe une autre option, comme utiliser data (), prop (), mais elles sont prises en charge dans HTML5 et jquery 1.6, ce qui n’est pas possible pour moi pour le moment. L’autre problème est que les données ne peuvent pas être définies côté serveur côté client par jquery data (). comme ils sont syntaxiquement diff. s'il existe un autre moyen, merci de suggérer Merci.
Je suppose que vous devriez utiliser ceci
jQuery('#div').attr(attname,attvalue);
Oui, mais utilisez le préfixe data-
avant pour éviter les collisions
$('Elm').attr('data-'+attname,attvalue);
L'utilisation du préfixe data-
ne nécessite pas HTML5.
Oui, vous pouvez ajouter n'importe quel attribut que vous voulez, soyez prudent:
$('#foobar').attr('foo','bar');
http://jsfiddle.net/each/rnnfk/ - Voir cette démo
<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'));
tout cela fonctionne pour moi: http://jsfiddle.net/r7uQ8/ Testé sur jQuery 1.4.4
La notation entre crochets est votre amie:
var attname = "haha";
jQuery('#div')[0][attname] = "foo";
alert(jQuery('#div')[0][attname]);