2012-10-18 6 views
6

Eventuali duplicati:
jQuery .attr retrieving custom attribute returns undefinedCreazione di un nuovo attributo con jQuery

Ho un problema strano, ma spero che sto solo facendo qualcosa di stupido. Sto cercando di creare un nuovo attributo su un elemento <img> utilizzando jQuery, e questa linea:

$(selector).attr('selected', 'no'); 

Quando ho ispezionare il DOM in Chrome, vedo solo selezionato = "selezionato", non importa quello che ho impostato la valore a.

Solo alcune informazioni extra: non posso usare solo valori booleani, poiché devo tenere traccia dei valori di proprietà "Sì", "No" e "Parziale". Sto chiamando una funzione JS dall'evento "onClick" della stessa img e passando come parametro a this. Ho ispezionato l'oggetto nel metodo e l'oggetto giusto è passato; il fatto che l'attributo sia impostato (anche se al valore sbagliato) supporta anche questo.

Sono certo che sto facendo qualcosa di stupido qui ... Qualsiasi consiglio sarebbe apprezzato.

risposta

11

Selezionato è già un attributo nello standard HTML, quindi non è possibile creare un attributo personalizzato con lo stesso nome. In tal caso, è necessario utilizzare gli attributi data- e creare, ad esempio, un attributo data-selected.

In jQuery si gestiscono gli attributi dei dati personalizzati utilizzando il metodo .data().

Gli attributi dei dati personalizzati sono descritti nella specifica HTML5 here.

5

si potrebbe inserire un data-* attributo personalizzato in questo modo

$(selector).data('selected', 'no'); 

vostro elemento fisserà un attributo data-selected

proprietà
1

A DOM è diverso da un attributo DOM;)

io suggerirei usando $(selector).data() per il tuo caso d'uso.

2

Se è necessario allegare dati arbitrari a un elemento, utilizzare .data(), non .attr().