Je sais que $(this)
résultats dans un objet jQuery, mais je vois souvent (especieally dans les plugins jQuery) l'utilisation de return this.whatever
ce qui est la règle générale?
Merci
Je sais que $(this)
résultats dans un objet jQuery, mais je vois souvent (especieally dans les plugins jQuery) l'utilisation de return this.whatever
ce qui est la règle générale?
Merci
Cela dépend de ce this
fait référence.
l'intérieur d'une fonction de gestionnaire d'événement this
se réfère à l'élément HTML l'événement est déclenché à partir de. Pour effectuer des opérations jQuery sur l'élément, vous utilisez $(this)
pour envelopper l'élément HTML.
this
dans le cadre d'un procédé de plug-in se réfère à l'objet de sélection jQuery lui-même. De plus, dans les plugins, la méthode jQuery each
est utilisée pour exécuter une fonction sur chaque élément d'une sélection jQuery. Ceci est souvent le plug-ins sont écrits ainsi de fournir une nouvelle méthode:
jQuery.fn.alertClasses = function()
{
// "this" refers to the jQuery object, returned by $(...)
if(this[0] === undefined)
return this;
this.each(function() {
// "this" now refers to an HTML element in the jQuery object
alert(this.className)
});
// "this" refers to the jQuery object again
return this;
}
En bref, il est tout au sujet du contexte de la méthode.La documentation de jQuery explique ce concept chaque fois que vous regardez des méthodes qui changent la valeur de this
.
Utilisez $(this)
si vous avez besoin d'accéder à votre objet comme objet jQuery. Si vous faites référence à des propriétés internes de votre objet que vous n'avez pas besoin jQuery pour, il suffit d'utiliser this
Comme vous l'avez dit:
$ (this) - retourne l'objet jQuery
ce - - retourne un objet DOM
this.whatever renverra un attribut/fonction de l'objet DOM
$ (ce) .Whatever renvoie un attribut/fonction de l'objet jQuery
$(this)
ajoute le "sucre" supplémentaire JQuery à l'élément, puis le renvoie. Donc, la règle est simplement que vous avez seulement besoin d'utiliser $(this)
si vous voulez appeler les méthodes JQuery, et qu'il n'a pas déjà été passé par $(..)
.
Utilisez $(this)
lorsque jQuery offre une meilleure interface pour la fonctionnalité dont vous avez besoin (ce qui est la plupart du temps pour la manipulation DOM).
je recommande d'utiliser this
lorsque vous devez (quand il n'y a pas d'équivalent jQuery), ou lorsque l'interface de base est plus simple, comme appeler form.submit()
plutôt que $('form').trigger('submit')
.
Utilisez $(this)
lorsque vous souhaitez utiliser la fonctionnalité JQuery sur « ceci ». Utilisez 'ceci' lorsque vous ne voulez pas utiliser la fonctionnalité JQuery sur 'ceci'.
$(this)
vous donne this
enveloppé dans jQuery. $($(this))
est le même que $(this)
et par conséquent l'appel supplémentaire à $
est inutile dans ce cas.
La réponse est que cela dépend de la situation. Dans beaucoup de plugins, vous appelez la méthode plugin sur un objet jQuery, ce qui fait this
déjà enveloppé dans jQuery!
La vérification de 'undefined' n'est-elle pas nécessaire ici? J'imagine que 'each()' sait déjà comment gérer des 'ensembles' vides. En fait, je pense que vous pouvez simplement faire 'return this.each (function() {...});'. –
En effet, je parierais que ce n'est pas nécessaire, mais c'est le nombre de plugins qui sont écrits (vraisemblablement comme une sorte d '"optimisation") et cela fait un bon exemple. –