appelant la fonction définie par l’utilisateur avec params

Je suis en train de définir la fonction func1 (); Je veux que ça prenne du param (s) c’est à dire

var func1(aaa, bbb){ //do something, anything! }; 

alors je veux l’appeler plus tard dans le doc quelque chose comme ça:

 $('#some_id').click(func1($this)); 

mais ça ne marche pas.

J’ai été déconner avec elle pendant un certain temps, mais la façon dont sa poignées jquery / javascript très étrange fonctions définies par l’utilisateur pour moi au moins. Some1 peut-il me fournir un extrait de code simple? THX

Si tout ce que vous voulez passer est $(this) , vous n’avez pas besoin du paramètre, car il sera disponible à l’ intérieur de la fonction définie.

 $('#some_id').click(func1); 

Cependant, vous ne pouvez pas append de parameters comme celui-ci:

 $('#some_id').click(func1(param1, param2)); 

Ensuite, pour votre définition de fonction, vous avez juste

 function func1() { } 

Si vous voulez des parameters autres que $ (this), vous devrez procéder comme suit:

 $('#some_id').click(function () { func1(aaa, bbb); }); 

Je suppose que vous essayez de vous assurer que this toujours référence à l’élément qui a reçu l’événement.

Essayez-le: http://jsfiddle.net/jKM9s/

 $('#some_id').click(function() { func1.call(this, 'somearg', 'somearg'); }); // now "this" references the element when func1 is called function func1(aaa, bbb){ //do something, anything! }; 

MODIFIER:

Si tout ce que vous vouliez était référence à l’élément cliqué, puis voir @ première solution de phoffer.

CA devrait etre

 function func1(aaa, bbb) { ... } 

Voici un exemple rapide:

Assurez-vous de définir votre fonction avec function . Puis , quand vous voulez l’appeler à partir de jQuery, vous devez utiliser une fonction en ligne au sein de click() .

 
Click Me!
Pick this one!
sur
Click Me!
Pick this one!
a
Click Me!
Pick this one!

En Javascript, vous ne pouvez pas atsortingbuer une fonction et transmettre des arguments en même temps. Utilisez une fonction anonyme …

 $('#some_id').click(function() { var arg1 = $(this); var arg2 = 'whatever'; return func1(arg1, arg2); }); 

Si le seul paramètre dont vous avez besoin est this , atsortingbuez la référence à la fonction …

 $('#some_id').click(func1); 

Vous ne pouvez pas le faire comme $('#some_id').click(func1($this)); à cause de .click(handler(eventObject)) définition … si vous appelez ça comme ça, $this dans func1($this) serait prévu comme eventObject .

pour cela, vous pouvez utiliser .bind() et event.data .

démo

par exemple..

 function sum(event) { alert(event.data.x + event.data.y); // `this` here would refer to the element calling this function // for example, $(this).attr('id') would return `someID` if called below } elle est function sum(event) { alert(event.data.x + event.data.y); // `this` here would refer to the element calling this function // for example, $(this).attr('id') would return `someID` if called below } - function sum(event) { alert(event.data.x + event.data.y); // `this` here would refer to the element calling this function // for example, $(this).attr('id') would return `someID` if called below } 

appeler comme

 $('#someID').bind('click',{x:4, y:5}, sum);