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()
.
sur
Click Me!Pick this one!a
Click Me!Pick this one!
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
.
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 estfunction 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);