Valeur de retour Jquery

J'ai utilisé un code:

jQuery.fn.MyFunction = function(){ return this.each(function() { attributes = "test"; return attributes; });} 

Mais quand j'appelle

  var1 = $(this).MyFunction();alert(var1); 

J'ai eu un [objet], mais pas le "test".

Comment autoriser le plugin jquery renvoie-t-il une certaine valeur?

Les plugins jQuery sont généralement conçus pour renvoyer un objet jQuery afin que vous puissiez chaîner des appels de méthode:

 jQuery("test").method1().method2() ... 

Si vous souhaitez renvoyer quelque chose, utilisez la syntaxe suivante:

 jQuery.fn.extend({ myFunction: function( args ) { attributes = "test"; return attributes; } }); 

, Ou accédez-y via son index en utilisant [] .

Voici une fois de plus votre code:

 jQuery.fn.MyFunction = function() { #1 return this.each(function() { #2 return "abc"; #3 }); #4 }; #5 

Voyons maintenant ce que chaque ligne fait.

  1. Nous déclarons la propriété MyFunction qui est une fonction pour chaque objet jQuery.
  2. Cette ligne est la première et la dernière déclaration de jQuery.MyFunction() . Nous this.each() le résultat de this.each() , pas le résultat de la fonction lambda (utilisé comme argument pour jQuery.each() ). Et this.each() renvoie pour que le résultat final soit que vous obtenez l'objet jQuery retourné.

Les lignes 3-5 ne sont pas importantes en fait.

Il suffit de considérer ces deux exemples:

 jQuery.fn.MyFunction = function() { return this.each(function() { return "abc"; }); }; jQuery.fn.AnotherFunction = function() { return "Hello World"; }; var MyFunctionResult = $(document).MyFunction(); var AnotherFunctionResult = $(document).AnotherFunction(); alert(MyFunctionResult); alert(AnotherFunctionResult); 

Je pense que jQuery renvoie l'objet, afin que vous puissiez maintenir l'aptitude à la chaîne de différentes fonctions.

Hmm, peut-être utiliser

 var1 = $(this)[0].MyFunction();alert(var1); 

Mais je ne sais pas si c'est ce que vous voulez ou si votre code fonctionne. Qu'est-ce que vous essayez d'atteindre? Êtes-vous sûr de vouloir appeler this.each() ?

Comme les autres l'ont dit, jQuery renvoie les objets jQuery dans la plupart des cas, et l'accès à l'objet réel peut être réalisé en utilisant un indexeur [] ou la méthode get .