10
votes

jQuery ceci contre $ (this) et peut-être même $ ceci

Je vois souvent des exemples d'utiliser le mot-clé ceci code> dans jQuery. Parfois, je le vois utilisé avec les dollars et les parenthèses, d'autres fois sans. Et je pensais que je l'ai vu utilisé avec un peu de chacun.

SO, P>

 var id = this.attr('id');

 var id = $(this).attr('id');

 var id = $this.attr('id');


1 commentaires

"Ceci" est une référence auto JS et la mise en dollars () vient de le renvoyer avec la classe JQuery. Ce qui fait référence à $ ceci - c'est juste un nom de variable (non prédéfini) et est généralement utilisé dans les plug-ins jQuery pour toujours avoir une référence à la classe mère du 1er niveau des classes d'enfants


4 Réponses :


5
votes

Ceci est un objet JavaScript natal qui fait référence à l'objet actuel. Les fonctions de jQuery définies avec jquery.fn. , ceci est un objet jQuery par lui-même. $ (this) est la voie de JQuery de tourner un code JavaScript dans un objet JQuery. Et $ ceci est juste un nom de variable. Si vous ne l'avez pas défini, ce serait non défini .

Voici une bonne explication de l'utilisation de jQuery de ceci :

http://www.learningjquerer.com/2007/08/What- est-ce


1 commentaires

Ce n'est pas uniquement utilisé dans les gestionnaires d'événements, il s'agit d'une référence à l'objet actuel. Voici une autre explication: Justin.harmonise. fm / index.php / 2009/09 / ...



8
votes

'Ceci' est un mot-clé d'objet JavaScript pour faire référence à l'objet actuel, '$ (ceci)' est la fonction Wrapper JQuery qui allume l'objet actuel en un objet JQuery, et lorsque vous voyez '$ ceci' à une variable que le développeur créé pour se référer à l'objet $ (cet objet), il est utile pendant une boucle de $. Par exemple: xxx


4 commentaires

Pourriez-vous expliquer votre réponse pour montrer quand et pourquoi le plain ceci pourrait entrer en jeu


La seule raison d'utiliser la simple "Ceci" dans cette situation est que si vous devez accéder à une méthode ou à une variable sur le nœud DOM RAW telle que ici: w3schools.com/jsref/dom_obj_node.dom par exemple, vous ne pourrez pas utiliser une méthode JQuery sur la plaine" Ceci "telle que: this.hide ();


Oh je vois. Donc, il serait donc prudent de dire que quelle que soit la "opération" sur ce aurait la possibilité d'être non conforme à la navigation non croisée? Alors que l'enveloppement dans $ () et utiliser une méthode jQuery serait beaucoup plus sûr? Il serait peut-être bon de mettre à jour votre réponse pour refléter ces implications de ce car l'OP voulait savoir à ce sujet.


Aucun exécution d'une opération sur Ce ne le rendra pas moins conforme. Enroulez-le dans $ () vous donne simplement la fonctionnalité que JQuery apporte à la table et ils ont été très prudents de faire leurs méthodes très croisées compatibles. Ainsi, en utilisant $ (this) en réalité est moins transversal de navigateur que Ce uniquement si l'équipe JQuery a raté quelque chose. $ (this) a les mêmes méthodes que ceci plus toutes les méthodes de l'objet JQuery. L'OP a été confondu sur le $ CU variable qu'il a vu utilisé dans d'autres développeurs, mais cette variable n'est qu'une version mise en cache de $ (this) habituellement.



11
votes

Ceci est une chose javascript. Il fait référence au "contexte" une fonction s'exécute. Pour la plupart des gestionnaires d'événements, c'est l'élément DOM ("brut") qui écoute un événement. Dans d'autres situations, cela signifiera d'autres choses; Googling " Ceci en JavaScript" pourrait être enlaumer.


Je dis que c'est l'élément DOM "brut", car JQuery est souvent utilisé pour envelopper des éléments de DOM Dans une enveloppe JQuery, vous pouvez donc utiliser des méthodes jQuery comme attr au lieu des utilisateurs habituels ( getattribute , setattribute , etc.). Cette emballage est accomplie avec la fonction $ , et c'est là que vous voyez $ (this) . Par exemple: xxx

est identique à xxx


$ ceci ou Ce $ est juste un nom de variable. Mais, il est souvent conventionnel de faire une mission comme xxx

la raison en est d'éviter d'invoquer continuellement la fonction $ , qui est quelque peu chère Comme cela crée un nouvel objet Wrapper JQuery à chaque fois. Si vous stockez l'élément emballé dans une variable, vous gagnez légèrement en efficacité.


dans de rares cas, Ce pourrait déjà être un wrapper JQuery. L'affaire qui se présente souvent pour moi est lorsque vous écrivez des plugins JQuery. Dans ce cas, vous pouvez faire des choses comme ceci.attr ("id") directement, sans l'envelopper d'abord, car il est déjà enveloppé. Dans les cas habituels (gestionnaires d'événements, $. Chaque , etc.) L'emballage est nécessaire.


1 commentaires

Oui, bonne réponse. Et cette dernière partie aide à expliquer quelque chose que j'ai lu quelque part, mais je pourrais le retrouver. J'ai vu ceci.attr ("id") utilisé, mais cela n'a pas fonctionné pour moi. Je pense que c'est ce qui me confondu le plus.



1
votes

au lieu d'appeler $ (this) plusieurs fois, il est plus efficace de le stocker comme une variable, généralement appelée $ ceci afin que les gens sachent ce qu'il est.


0 commentaires