2009-11-12 8 views
2

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

Répondre

1

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.

+0

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() {...});'. –

+0

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. –

1

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

1

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

2

$(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 $(..).

1

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').

3

Utilisez $(this) lorsque vous souhaitez utiliser la fonctionnalité JQuery sur « ceci ». Utilisez 'ceci' lorsque vous ne voulez pas utiliser la fonctionnalité JQuery sur 'ceci'.

3

$(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!

Questions connexes