Comment faire pour exécuter une fonction de rappel sur un jQuery trigger(“clic”)?
J'ai besoin de déclencher un événement personnalisé dans le rappel d'un trigger
appel, mais je ne peux pas le faire fonctionner.
J'ai essayé ceci:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
function runtests () {
console.log("clicked the input");
};
$input.trigger('click', runtests());
et ce:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
$input.trigger('click', function(){
console.log("clicked the input");
}
Ni de ce qui fonctionne.
Question:
Comment puis-je obtenir une fonction de callback à exécuter lorsque je suis déclenchement d'un clic sur un élément?
- Pourquoi êtes-vous en ajoutant pas défini comme second paramètre de déclenchement ? Qu'est-ce que second paramètre censé faire ? Êtes-vous confus de déclenchement et les lier ?
- C'est ma tentative à une fonction de rappel... j'ai aussi essayé en l'enveloppant dans
[]
comme par jquery API, mais aussi ne fonctionne pas .trigger
n'accepte pas de rappels.$input.trigger('click')
déclenche laclick
de l'événement sur la$input
éléments, c'est à dire qu'il va exécuter laclick
gestionnaires d'événements liés à ces éléments. Il semble que vous avez lierruntest
à$input
, mais je ne suis pas sûr de ce que vous voulez exactement.- Mais comment est-ce rappel censé être utilisé ?
- J'ai besoin de cliquer sur l'entrée et après qu'il a exécuté ses propres gestionnaires d', j'ai besoin d'exécuter un ensemble de qunit tests (afin de vérifier si l'entrée a fait ce qu'il doit)
- Les gestionnaires d'événements exécuter dans l'ordre où ils sont liés à l'élément. Donc, si vous liez votre
qunit
de rappel pour les éléments après la "normale" des gestionnaires d'événements, il devrait fonctionner correctement. edit: Mais essayez dystroy est tout d'abord la solution, ce serait le plus simple. - ok. En essayant. Merci à ce jour.
- Cela peut vous aider de retour d'appel pour .trigger()
- désolé, j'étais édition de ma réponse...vous êtes si prompts à juger...
- Btw, comment gérer ces situations avec QUnit est décrite sur leur site web: qunitjs.com/cookbook/#testing-user-actions. On dirait que vous n'avez pas besoin de lier un gestionnaire d'événements.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous appelez
trigger
, le gestionnaire d'événement est immédiatement exécuté, de sorte que vous n'avez pas besoin de rappel. Utilisez simplementOui - Il est vrai que le déclencheur ne prend pas de rappel, mais nous pouvons passer de rappel comme paramètre.
Espérons que cela vous aide à
.trigger( eventType [, extraParameters ] )
.Vous devez d'abord lier l'événement click et vous pouvez alors déclencher l'événement click.
.on()
au lieu de.bind()
.$input.trigger('click', function(){//code when the click function has been completed})
;Déclencheur n'a pas de fonction de rappel.
Document Officiel
Ce que vous pouvez faire
Vous devez utiliser
bind
ouon
pour ajouter des rappels. Dans votre cas, il devrait ressembler à ceci:Même version plus courte pour la liaison sur est
$input.click(runtests)
Puis elle sera appelée lors d'un clic ou vous pouvez déclencher manuellement avec
$input.trigger('click')
ou tout simplement$input.click()
.Le Déclencheur n'a pas une fonction de rappel - vous pouvez mieux de ré-écrire votre code pour utiliser le .sur méthode.
JSFiddle.
Si vous avez un gestionnaire de clic sur chaque entrée, mais voulez faire quelque chose sur un élément spécifique: