309 votes

jQuery .Cliquez passer des paramètres à une fonction utilisateur

Je suis en train d'appeler une fonction avec des paramètres à l'aide de jquery .cliquez sur, mais je ne peux pas le faire fonctionner.

C'est la façon dont je veux que cela fonctionne:

$('.leadtoscore').click(add_event('shot'));

qui appelle

function add_event(event) {
    blah blah blah }

Il fonctionne si je n'utilise pas les paramètres, comme ceci

$('.leadtoscore').click(add_event);
function add_event() {
    blah blah blah }

Mais j'ai besoin d'être en mesure de passer un paramètre par le biais de mon add_event fonction.

A quelqu'un faire cette chose en particulier? Je sais que je peux utiliser .click(function() { blah }, mais je l'appelle l' add_event fonction à partir de plusieurs endroits et souhaitez faire de cette façon.

Merci!!!!

548voto

Chris Kempen Points 3990

Pour la perfection, je suis tombé sur une autre solution qui a été une partie de la fonctionnalité introduite dans la version 1.4.3 de l'jQuery cliquez sur gestionnaire d'événement.

Il vous permet de passer d'une carte de données de l'objet d'événement qui est automatiquement transmis à la fonction de gestionnaire d'événement par jQuery en tant que premier paramètre. Les données de la carte seront remis à l' .click() de la fonction en tant que premier paramètre, suivie par la fonction de gestionnaire d'événement.

Voici un peu de code pour illustrer ce que je veux dire:

// say your selector and click handler looks something like this...
$("some selector").click({param1: "Hello", param2: "World"}, cool_function);

// in your function, just grab the event object and go crazy...
function cool_function(event){
    alert(event.data.param1);
    alert(event.data.param2);
}

Je sais que c'est tard dans le jeu, pour cette question, mais les réponses précédentes m'a conduit à cette solution, donc j'espère que cela aide quelqu'un un jour!

87voto

Nick Craver Points 313913

Vous avez besoin d'utiliser une fonction anonyme comme ceci:

$('.leadtoscore').click(function() {
  add_event('shot')
});

Vous pouvez l'appeler comme vous avez dans l'exemple, il suffit d'un nom de fonction sans paramètres, comme ceci:

$('.leadtoscore').click(add_event);

Mais l' add_event méthode ne sera pas obtenir de l' 'shot' comme c'est le paramètre, mais plutôt ce que click passe du rappel, qui est l' event objet lui-même...il n'est donc pas applicable dans ce cas, mais travaille pour de nombreux autres. Si vous avez besoin de passer des paramètres, utiliser une fonction anonyme...ou, il y a une autre option, utilisez .bind() et passer des données, comme ceci:

$('.leadtoscore').bind('click', { param: 'shot' }, add_event);

Et l'accès en add_event, comme ceci:

function add_event(event) {
  //event.data.param == "shot", use as needed
}

37voto

user113716 Points 143363

Si vous appelez cela la façon dont vous l’aviez...

.. .vous devez `` retourner une fonction, comme...

La fonction est retournée et utilisée comme argument pour `` .

11voto

Kevin Points 956

Oui, il s’agit d’un ancien poste. Malgré tout, une personne peut juger utile. Voici une autre façon d’envoyer des paramètres aux gestionnaires d’événements.

6voto

<pre><code></code><p>La valeur objet javaScript onclick élément :</p><pre><code></code></pre><p>obtenir l’objet de « cet » élément :</p><pre><code></code></pre></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X