2011-09-21 7 views
11

Sto usando jquery 1.5 e html4 standard.
sto cercando di impostare Attributo personalizzato che ottengo da JavaScript variabile, ma non è l'impostazione del campione up.code:è possibile impostare l'attributo personalizzato con la funzione jQuery attr() usando le variabili JS

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}); 

ma trattare attname come stringa stessa piuttosto variabile. ci sono altre opzioni come usare data(), prop() ma sono supportate in HTML5 e jquery 1.6 che al momento non sono possibili. Un altro problema è che i dati non possono essere impostati sul lato server per essere sincronizzati e usati a lato client da dati jquery(). come sono sintatticamente diff. se c'è qualche altro modo si prega di suggerire Grazie.

+0

** karim79 ** Grazie per la modifica @Sedat grazie per indicare l'errore di sintassi che stavo facendo. ** Brogrammer **, ** Usman **, ** Andy ** Grazie a tutti per aver fornito input tutti erano corretti in un modo o nell'altro. – rain

risposta

20

Credo che si dovrebbe usare questo

jQuery('#div').attr(attname,attvalue); 
2
<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')); 

funziona tutto questo per me: http://jsfiddle.net/r7uQ8/ provata su jQuery 1.4.4

+1

Abbastanza sicuro che se leggi la sua domanda non vuole l'uso degli attributi dei dati. – daryl

+0

@Brogrammer: Hm l'ho capito in questo modo, che intendeva che non può usare i dati perché pensava che funzionassero solo in jquery 1.6. Così ho fatto notare che funzionano anche in 1.4.4. E usarli sarebbe più elegante secondo me. – Andy

0

Piazza notazione staffa è tuo amico:

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

http://jsfiddle.net/KJBHq/

5

Sì, è possibile aggiungere qualsiasi attributo che si desidera, basta stare attenti:

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

http://jsfiddle.net/each/rnnfk/ - Check out this demo

10

Sì, ma utilizzare data- prefisso prima per evitare la collisione

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

L'uso del prefisso data- non richiede HTML5.

Problemi correlati