Quelle est la différence entre '$(this) " et "ceci"?
Je suis actuellement en train de travailler par le biais de ce tutoriel: Débuter avec jQuery
Pour les deux exemples ci-dessous:
$("#orderedlist").find("li").each(function (i) {
$(this).append(" BAM! " + i);
});
$("#reset").click(function () {
$("form").each(function () {
this.reset();
});
});
Avis dans le premier exemple, nous utilisons $(this)
pour ajouter du texte à l'intérieur de chaque li
élément. Dans le deuxième exemple, nous utilisons this
directement lors de la réinitialisation de la forme.
$(this)
semble être utilisé beaucoup plus souvent que this
.
Ma conjecture est que dans le premier exemple, $()
est la conversion de chaque li
élément dans un objet jQuery qui comprend la append()
fonction alors que dans le deuxième exemple reset()
peut être appelée directement sur le formulaire.
Fondamentalement, nous avons besoin de $()
spécial jQuery seule les fonctions.
Est-ce correct?
- pourquoi en était-il protégé? L'OP remis en cause, et deviné la bonne réponse.
- Je pense que je devrais demander ce dans la meta, mais si c'est tout ce qui est nécessaire pour la protection, ne devraient pas être protégés à toutes les questions
Vous devez vous connecter pour publier un commentaire.
Oui vous avez seulement besoin
$()
lorsque vous êtes à l'aide de jQuery. Si vous voulez jQuery aider à faire DOM choses il suffit de garder cela à l'esprit.Fondamentalement, chaque fois que vous obtenez un ensemble d'éléments de jQuery se transforme en une objet jQuery. Si vous savez que vous avez seulement un résultat, il va être dans le premier élément.
Et ainsi de suite...
$(this)[0]
surthis
si ce sont toujours les mêmes?$(this)[0]
je viens de l'utiliser pour illustrer le concept. 🙂 Je ne l'utilisation de$("#myDiv")[0]
surdocument.getElementById("myDiv")
bien.$()
est le jQuery fonction constructeur.this
est une référence à l'élément DOM de l'invocation.Donc, fondamentalement, dans
$(this)
, vous êtes juste de passage lethis
dans$()
en tant que paramètre de sorte que vous pouvez appeler les méthodes jQuery et fonctions.Oui, vous avez besoin
$(this)
pour les fonctions jQuery, mais lorsque vous souhaitez accéder, le code javascript de base des méthodes de l'élément que ne pas l'utiliser jQuery, vous pouvez simplement utiliserthis
.Lors de l'utilisation de
jQuery
, il est conseillé d'utiliser$(this)
habituellement. Mais si vous savez (vous devez apprendre et de savoir) la différence, il est parfois plus pratique et rapide à utiliser, justethis
. Par exemple:est plus facile et plus pur que
this
est l'élément,$(this)
est l'objet jQuery construit avec cet élémentUn regard plus profond
this
MDN est contenue dans un contexte d'exécutionLe champ d'application fait référence à l'actuel Contexte d'exécutionECMA. Afin de comprendre
this
, il est important de comprendre la façon de contextes d'exécution fonctionner en JavaScript.contextes d'exécution lier ce
Lorsque le contrôle pénètre dans un contexte d'exécution (le code est exécuté dans le champ d'application) à l'environnement pour les variables de configuration (Lexicale et des Environnements Variables - essentiellement ceci définit une zone pour les variables d'entrée qui étaient déjà accessibles, et un espace pour les variables locales à être stockés), et la liaison de
this
se produit.jQuery lie ce
Contextes d'exécution former une logique de la pile. Le résultat est que les contextes plus bas dans la pile d'avoir accès à de précédentes variables, mais leurs liaisons ont été modifiés. Chaque fois jQuery appelle une fonction de rappel, il modifie le cette liaison en utilisant
appliquer
MDN.Le résultat de l'appel
apply
est que à l'intérieur de jQuery fonctions de rappel,this
fait référence à l'élément courant utilisé par la fonction de rappel.Par exemple, dans
.each
, la fonction de rappel couramment utilisé permet.each(function(index,element){/*scope*/})
. Dans cette étendue,this == element
est vrai.jQuery rappels utiliser l'application de fonction de lier la fonction appelée avec l'élément courant. Cet élément provient de l'objet jQuery d'éléments du tableau. Chaque objet jQuery construit contient un tableau d'éléments qui correspondent à la sélecteurjQuery API qui a été utilisé pour instancier l'objet jQuery.
$(selector)
appelle la fonction jQuery (rappelez-vous que$
est une référence àjQuery
, code:window.jQuery = window.$ = jQuery;
). En interne, la fonction jQuery instancie un objet de fonction. Ainsi, alors qu'il peut ne pas être immédiatement évident, à l'aide de$()
utilise en internenew jQuery()
. Une partie de la construction de cet objet jQuery est de trouver tous les matches de la sélection. Le constructeur va également accepter des chaînes html et des éléments. Lorsque vous passezthis
à l'jQuery constructeur, vous êtes de passage dans l'élément en cours pour un objet jQuery pour être construit avec. L'objet jQuery contient alors un tableau comme la structure des éléments du DOM correspondant au sélecteur (ou tout simplement le seul élément dans le cas dethis
).Une fois l'objet jQuery est construit, le jQuery API est maintenant exposé. Lorsqu'un jQuery api de la fonction est appelée, elle en interne itérer sur ce tableau-comme la structure. Pour chaque élément dans le tableau, il appelle la fonction de rappel pour l'api, la liaison de la fonction de rappel du
this
à l'élément courant. Cet appel peut être vu dans l'extrait de code ci-dessus oùobj
est la matrice de structure, eti
est l'itérateur utilisé pour la position dans le tableau de l'élément courant.Ouais, en utilisant
$(this)
, vous avez activé la fonction jQuery pour l'objet. En utilisant simplementthis
, il a seulement générique Javascript fonctionnalité.this
référence à un objet javascript et$(this)
utilisé pour encapsuler avec jQuery.Exemple =>