this.id
(come sai)
this.value
(sulla maggior parte dei tipi di input. solo i problemi che conosco sono IE quando un <select>
non ha value
proprietà impostate sui suoi <option>
elementi o ingressi radio in Safari.)
this.className
per ottenere o impostare un'intera proprietà "class"
this.selectedIndex
contro a <select>
per ottenere l'indice selezionato
this.options
contro a <select>
per ottenere un elenco di <option>
elementi
this.text
contro an <option>
per ottenere il suo contenuto testuale
this.rows
contro a <table>
per ottenere una raccolta di <tr>
elementi
this.cells
contro a <tr>
per ottenere le sue celle (td e th)
this.parentNode
per avere un genitore diretto
this.checked
per ottenere lo stato verificato di un checkbox
Thanks @Tim Down
this.selected
per ottenere lo stato selezionato di un option
ringraziamento @Tim giù
this.disabled
per ottenere lo stato disabilitato di un input
Thanks @Tim Down
this.readOnly
per ottenere lo stato readOnly di un input
Thanks @Tim Down
this.href
contro un <a>
elemento per ottenere il suohref
this.hostname
contro un <a>
elemento per ottenere il suo dominiohref
this.pathname
contro un <a>
elemento per ottenere il suo percorsohref
this.search
contro un <a>
elemento per ottenere la sua stringa di queryhref
this.src
contro un elemento in cui è valido avere un src
... Penso che tu abbia avuto l'idea.
Ci saranno momenti in cui le prestazioni sono cruciali. Ad esempio, se stai eseguendo qualcosa in un loop molte volte, potresti voler abbandonare jQuery.
In generale è possibile sostituire:
$(el).attr('someName');
con:
Sopra era formulato male. getAttribute
non è un sostituto, ma recupera il valore di un attributo inviato dal server e il suo corrispondente setAttribute
lo imposterà. Necessario in alcuni casi.
Le frasi sottostanti lo hanno coperto. Vedi questa risposta per un trattamento migliore.
el.getAttribute('someName');
... per accedere direttamente a un attributo. Si noti che gli attributi non sono gli stessi delle proprietà (anche se a volte si rispecchiano a vicenda). Certo che c'è setAttribute
anche.
Supponiamo che tu abbia avuto una situazione in cui hai ricevuto una pagina in cui devi scartare tutti i tag di un certo tipo. È breve e facile con jQuery:
$('span').unwrap(); // unwrap all span elements
Ma se ce ne sono molti, potresti voler fare una piccola API DOM nativa:
var spans = document.getElementsByTagName('span');
while( spans[0] ) {
var parent = spans[0].parentNode;
while( spans[0].firstChild ) {
parent.insertBefore( spans[0].firstChild, spans[0]);
}
parent.removeChild( spans[0] );
}
Questo codice è piuttosto breve, funziona meglio della versione jQuery e può essere facilmente trasformato in una funzione riutilizzabile nella tua libreria personale.
Può sembrare che io abbia un ciclo infinito con l'esterno a while
causa di while(spans[0])
, ma poiché abbiamo a che fare con una "lista live", questa viene aggiornata quando eseguiamo il parent.removeChild(span[0]);
. Questa è una caratteristica piuttosto ingegnosa che ci manca quando si lavora con un array (o un oggetto simile a un array).
this.id
?