web-dev-qa-db-fra.com

est-il possible de définir un attribut personnalisé avec la fonction jQuery attr () à l'aide de variables JS

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.

12
rain

Je suppose que vous devriez utiliser ceci

jQuery('#div').attr(attname,attvalue);
22
Sedat Başar

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.

10
Usman

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

6
daryl
<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

3
Andy

La notation entre crochets est votre amie:

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

http://jsfiddle.net/KJBHq/

1
karim79