this.id
(comme vous le savez)
this.value
(sur la plupart des types d'entrée. seuls les problèmes que je connais sont IE quand un <select>
n'a pas de value
propriétés définies sur ses <option>
éléments, ou des entrées radio dans Safari.)
this.className
pour obtenir ou définir une propriété "classe" entière
this.selectedIndex
contre un <select>
pour obtenir l'index sélectionné
this.options
contre un <select>
pour obtenir une liste d' <option>
éléments
this.text
contre un <option>
pour obtenir son contenu textuel
this.rows
contre un <table>
pour obtenir une collection d' <tr>
éléments
this.cells
contre a <tr>
pour obtenir ses cellules (td & th)
this.parentNode
avoir un parent direct
this.checked
pour obtenir l'état vérifié d'un checkbox
Thanks @Tim Down
this.selected
pour obtenir l'état sélectionné d'un option
Thanks @Tim Down
this.disabled
obtenir l'état désactivé d'un input
Thanks @Tim Down
this.readOnly
pour obtenir l'état readOnly d'un input
Thanks @Tim Down
this.href
contre un <a>
élément pour obtenir sonhref
this.hostname
contre un <a>
élément pour obtenir le domaine de sonhref
this.pathname
contre un <a>
élément pour obtenir le chemin de sonhref
this.search
contre un <a>
élément pour obtenir la chaîne de requête de sonhref
this.src
contre un élément où il est valable d'avoir un src
... Je pense que vous avez l'idée.
Il y aura des moments où la performance sera cruciale. Comme si vous exécutez plusieurs fois une boucle, vous pouvez abandonner jQuery.
En général, vous pouvez remplacer:
$(el).attr('someName');
avec:
Ci-dessus était mal formulé. getAttribute
n'est pas un remplacement, mais il récupère la valeur d'un attribut envoyé par le serveur, et son correspondant setAttribute
le définira. Nécessaire dans certains cas.
Les phrases ci-dessous l'ont en quelque sorte couvert. Voir cette réponse pour un meilleur traitement.
el.getAttribute('someName');
... afin d'accéder directement à un attribut. Notez que les attributs ne sont pas les mêmes que les propriétés (bien qu'ils se reflètent parfois). Bien sûr, il y en a setAttribute
aussi.
Disons que vous avez eu une situation où vous avez reçu une page où vous devez déballer toutes les balises d'un certain type. C'est court et facile avec jQuery:
$('span').unwrap(); // unwrap all span elements
Mais s'il y en a beaucoup, vous voudrez peut-être faire une petite API DOM native:
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] );
}
Ce code est assez court, il fonctionne mieux que la version jQuery et peut facilement être transformé en fonction réutilisable dans votre bibliothèque personnelle.
Il peut sembler que j'ai une boucle infinie avec l'extérieur à while
cause de while(spans[0])
, mais parce que nous avons affaire à une "liste en direct", elle est mise à jour lorsque nous faisons le parent.removeChild(span[0]);
. C'est une fonctionnalité assez astucieuse que nous manquons lorsque nous travaillons avec un tableau (ou un objet semblable à un tableau) à la place.
this.id
?