Je joue avec une fonction que je veux lier à tous les liens. À l'heure actuelle, la fonction se déclenche lorsque la page se charge, plutôt que lorsque je clique sur le lien.
Voici mon code. (Je peux poster la fonction showDiv()
, si vous avez besoin de la voir.) Pouvez-vous dire si je fais quelque chose de mal ou de stupide ici?
$(document).ready(function(){
$('a.test').bind("click", showDiv());
});
Merci!
Vous souhaitez passer un référence à une fonction en tant que rappel, et non le résultat de l'exécution de la fonction:
showDiv()
renvoie une certaine valeur; si aucune instruction return
n'a été utilisée, undefined
est renvoyée.
showDiv
est une référence à la fonction qui doit être exécutée.
Cela devrait fonctionner:
$(document).ready(function(){
$('a.test').bind("click", showDiv);
});
Alternativement, vous pouvez utiliser une fonction anonyme pour effectuer une fonction plus avancée:
...bind('click', function(){
foo.showDiv(a,b,c);
...more code...
});
Dans certaines circonstances, vous pouvez vouloir utiliser la valeur renvoyée par une fonction comme rappel:
function function foo(which)
{
function bar()
{
console.log('so very true');
}
function baz()
{
console.log('no way!');
}
return which ? bar : baz;
}
...click( foo( fizz ) );
Dans cet exemple, foo
est évalué à l'aide de fizz
et renvoie une fonction qui sera affectée en tant que rappel pour l'événement click.
On dirait que vous appelez directement la fonction showDiv (et que vous liez le résultat de retour de showDiv () au gestionnaire de clics au lieu de le lier directement.
Tu veux quelque chose comme
$(document).ready(function() { $('a.test').bind("click", showDiv); });
Utilisez la ligne ci-dessous. showDiv()
appellera la fonction immédiatement lorsque cette ligne sera exécutée.
$('a.test').bind("click", showDiv);
Changez-le en: $('a.test').bind("click", showDiv);
(ne mettez pas de parens autour de showDiv
car vous voulez passer la référence de la fonction).