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 valueproprié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.selectedIndexcontre un <select>pour obtenir l'index sélectionné
this.optionscontre un <select>pour obtenir une liste d' <option>éléments
this.textcontre un <option>pour obtenir son contenu textuel
this.rowscontre un <table>pour obtenir une collection d' <tr>éléments
this.cellscontre a <tr>pour obtenir ses cellules (td & th)
this.parentNode avoir un parent direct
this.checkedpour obtenir l'état vérifié d'un checkbox Thanks @Tim Down
this.selectedpour obtenir l'état sélectionné d'un option Thanks @Tim Down
this.disabledobtenir l'état désactivé d'un input Thanks @Tim Down
this.readOnlypour obtenir l'état readOnly d'un input Thanks @Tim Down
this.hrefcontre un <a>élément pour obtenir sonhref
this.hostnamecontre un <a>élément pour obtenir le domaine de sonhref
this.pathnamecontre un <a>élément pour obtenir le chemin de sonhref
this.searchcontre 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é. getAttributen'est pas un remplacement, mais il récupère la valeur d'un attribut envoyé par le serveur, et son correspondant setAttributele 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 setAttributeaussi.
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 à whilecause 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?