C'est ça :
var contents = document.getElementById('contents');
La même chose que ça :
var contents = $('#contents');
Étant donné que jQuery est chargé ?
C'est ça :
var contents = document.getElementById('contents');
La même chose que ça :
var contents = $('#contents');
Étant donné que jQuery est chargé ?
Pas exactement !
document.getElementById('contents'); //returns a HTML DOM Object
var contents = $('#contents'); //returns a jQuery Object
En jQuery, pour obtenir le même résultat que document.getElementById
vous pouvez accéder à l'objet jQuery et obtenir le premier élément de l'objet (rappelez-vous que les objets JavaScript agissent comme des tableaux associatifs).
var contents = $('#contents')[0]; //returns a HTML DOM Object
Pour toute personne intéressée document.getElementBy
ne fonctionne pas correctement dans <IE8. Il reçoit également des éléments par name
donc vous pourriez théoriquement argumenter document.getElementById
est non seulement trompeuse, mais peut aussi renvoyer des valeurs incorrectes. Je pense que @John l'a déjà fait, mais j'ai pensé que cela ne ferait pas de mal de l'ajouter.
Faites attention si votre identifiant n'est pas fixé. $('#'+id)[0]
n'est pas égal à document.getElementById(id)
parce que id
peut contenir des caractères qui sont traités de manière spéciale dans jQuery !
C'était très utile - je ne le savais pas ! Je suis sûr que j'ai déjà utilisé avant, cependant, c'est ce qui me déconcerte. Hé, on apprend quelque chose tous les jours ! Merci !
Non.
Appel à document.getElementById('id')
retournera un objet DOM brut.
Appel à $('#id')
renvoie un objet jQuery qui englobe l'objet DOM et fournit des méthodes jQuery.
Ainsi, vous pouvez seulement appeler des méthodes jQuery comme css()
o animate()
sur le $()
appeler.
Vous pouvez également écrire $(document.getElementById('id'))
qui renverra un objet jQuery, ce qui est équivalent à $('#id')
.
Vous pouvez obtenir l'objet DOM sous-jacent à partir d'un objet jQuery en écrivant $('#id')[0]
.
Savez-vous par hasard lequel des deux est le plus rapide : $(document.getElementById('element')) ou $('#element') ?
@IvanIvkovic : La première est plus rapide, car elle n'implique pas l'analyse syntaxique des chaînes de caractères.
@SLaks Quelle est la principale différence entre un objet DOM brut et un objet jQuery ? En utilisant l'objet jQuery, nous avons la possibilité d'appliquer les méthodes jQuery ?
Non. La première renvoie un élément DOM, ou null, alors que la seconde renvoie toujours un objet jQuery. L'objet jQuery sera vide si aucun élément avec l'id de contents
a été apparié.
L'élément DOM retourné par document.getElementById('contents')
vous permet de faire des choses telles que changer le .innerHTML
(o .value
), etc., mais vous devrez utiliser la fonction Méthodes jQuery sur l'objet jQuery.
var contents = $('#contents').get(0);
est plus équivoque, cependant si aucun élément avec l'id de contents
est apparié, document.getElementById('contents')
retournera null, mais $('#contents').get(0)
retournera indéfini.
L'un des avantages de l'utilisation de l'objet jQuery est que vous n'obtiendrez aucune erreur si aucun élément n'est renvoyé, car un objet est toujours renvoyé. Cependant, vous obtiendrez des erreurs si vous essayez d'effectuer des opérations sur l'objet null
retourné par document.getElementById
Non, en fait le même résultat serait :
$('#contents')[0]
jQuery ne sait pas combien de résultats seront renvoyés par la requête. Ce que vous obtenez en retour est un objet jQuery spécial qui est une collection de tous les contrôles qui correspondent à la requête.
Une partie de ce qui rend jQuery si pratique est que la plupart des méthodes appelées sur cet objet qui semblent être destinées à un seul contrôle, sont en fait dans une boucle appelée sur tous les membres de la collection.
Lorsque vous utilisez la syntaxe [0], vous prenez le premier élément de la collection interne. À ce stade, vous obtenez un objet DOM
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
12 votes
En plus des points soulevés dans les réponses, la version jQuery est app. 100x plus lente.
8 votes
Est-ce que cela est prouvé quelque part ?
13 votes
@torazaburo En fait, la version de jQuery n'est même pas 3 fois plus lente (du moins avec la dernière version de Chrome). Voir : jsperf.com/getelementbyid-vs-jquery-id/44
3 votes
@MichaPerakowski dans ce lien la version jquery est 10 fois plus lente. 26 millions contre 2,4 millions
1 votes
Le lien correct mis à jour pour JSPerf est : jsperf.com/getelementbyid-vs-jquery-id Dans mon cas (FF 58), c'est 1000 fois plus lent. Quoi qu'il en soit, jQuery effectue toujours 2,5 millions d'opérations par seconde. En général, ce n'est pas un problème, et on ne peut certainement pas les comparer en termes de fonctionnalité.