J'essaie d'appeler une fonction avec des paramètres en utilisant le .click de jQuery, mais je ne peux pas le faire fonctionner.
Voici comment je veux que cela fonctionne:
$('.leadtoscore').click(add_event('shot'));
qui appelle
function add_event(event) {
blah blah blah }
Cela fonctionne si je n'utilise pas de paramètres, comme ceci:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
Mais je dois pouvoir transmettre un paramètre à ma add_event
fonction.
Comment puis-je faire cette chose spécifique?
Je sais que je peux l'utiliser .click(function() { blah }
, mais j'appelle la add_event
fonction à partir de plusieurs endroits et je veux le faire de cette façon.
jquery
function
parameter-passing
Paul Hoffer
la source
la source
patricks
réponse, ce qui, je pense, est une excellente solution: jsfiddle.net/naRRk/1Réponses:
Par souci de rigueur, je suis tombé sur une autre solution qui faisait partie de la fonctionnalité introduite dans la version 1.4.3 du gestionnaire d'événements click jQuery .
Il vous permet de passer un mappage de données à l'objet événement qui est automatiquement renvoyé à la fonction de gestionnaire d'événements par jQuery comme premier paramètre. Le mappage de données serait remis à la
.click()
fonction en tant que premier paramètre, suivi de la fonction de gestionnaire d'événements.Voici un code pour illustrer ce que je veux dire:
Je sais qu'il est tard dans le jeu pour cette question, mais les réponses précédentes m'ont conduit à cette solution, donc j'espère que cela aidera quelqu'un un jour!
la source
var param_obj = {data : {param1: "Hello", param2: "World"}}; cool_function(param_obj);
?Vous devez utiliser une fonction anonyme comme celle-ci:
Vous pouvez l'appeler comme vous l'avez dans l'exemple, juste un nom de fonction sans paramètres, comme ceci:
Mais la
add_event
méthode n'obtiendra pas'shot'
comme son paramètre, mais plutôt tout ce quiclick
passe à son rappel, qui est l'event
objet lui-même ... donc il n'est pas applicable dans ce cas , mais fonctionne pour beaucoup d'autres. Si vous devez passer des paramètres, utilisez une fonction anonyme ... ou, il y a une autre option, utilisez.bind()
et passez des données, comme ceci:Et accédez-y
add_event
, comme ceci:la source
click
gestionnaire. Dans la méthode anonyme et les.bind()
exemples ci-dessus que vous pouvez utiliserthis
, cela se référera à celui.loadtoscore
sur lequel vous avez cliqué (comme vous vous en doutez). Dans le dernier exemple, àadd_event(event)
l' intérieur de la même chose est vraie, utilisezthis
ou$(this)
et ce sera ce que vous voulez.function(){ add_event('shot', $(this));}
etfunction add_event(event, element){...}
.element
serait un élément jQuery ici (cela fonctionnebind()
bien que comme Nick l'a mentionné).$(this)
à l'intérieur de la fonction, par exemple: jsfiddle.net/tSu5tSi vous l'appelez comme vous l'avez fait ...
... vous devez avoir
add_event()
renvoyé une fonction, comme ...La fonction est renvoyée et utilisée comme argument pour
.click()
.la source
event
paramètre. J'aurais dû l'inclure. : o)J'ai réussi à utiliser .on () comme ceci:
Ensuite, à l'intérieur de la
add_event
fonction, vous avez accès à «tirer» comme ceci:Consultez la documentation .on () pour plus d'informations, où ils fournissent l'exemple suivant:
la source
Oui, c'est un ancien poste. Quoi qu'il en soit, quelqu'un peut le trouver utile. Voici une autre façon d'envoyer des paramètres aux gestionnaires d'événements.
la source
Définissez l'objet javaScript sur l'élément onclick:
récupère l'objet depuis "this":
la source
J'obtiens la solution simple:
Ma moyenne est de passer l'
onclick
événement value à l'javascript function sendData()
initialisation de la variable et de le prendre par la méthode du gestionnaire d'événements jquery.Ceci est possible car au début
sendData(valueid)
est appelé et initialise la valeur. Ensuite, après que l'événement jquery soit exécuté, utilisez cette valeur.Il s'agit de la solution simple et de la solution Pour les détails, allez ici .
la source