J'ai besoin de déclencher un événement personnalisé dans le rappel d'un appel trigger
, 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 ça:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
$input.trigger('click', function(){
console.log("clicked the input");
}
Aucun des deux ne fonctionne.
Question:
Comment puis-je exécuter une fonction de rappel lorsque je déclenche un clic sur un élément?
Lorsque vous appelez trigger
, le gestionnaire d'événements lié est immédiatement exécuté, vous n'avez donc pas besoin de rappel. Utilisez simplement
$input.trigger('click');
runtests();
Oui - Il est vrai que le déclencheur ne prend pas de rappel mais nous pouvons passer le rappel en paramètre.
//.trigger( eventType [, extraParameters ] )
$("#element").bind("customCall", function(e, callback){
callback();
}
var callback = function(){alert("Hello");}
$("#element").trigger("customCall",[callback]);
J'espère que cela vous aidera
Vous devez d'abord lier l'événement click, puis vous pouvez déclencher l'événement click.
$input.bind('click', function() {
console.log("clicked the input");
});
$input.trigger('click');
Le déclencheur n'a pas de fonction de rappel.
.trigger( eventType [, extraParameters ] )
Ce que vous pouvez faire
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
$input.on('click',function(){
console.log("clicked the input");
});
Vous devez utiliser bind
ou on
pour ajouter des rappels. Dans votre cas, cela devrait ressembler à ceci:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
function runtests () {
console.log("clicked the input");
};
$input.bind('click', runtests);
Une version encore plus courte pour le clic de liaison est $input.click(runtests)
Ensuite, il sera appelé au clic ou vous pouvez le déclencher manuellement avec $input.trigger('click')
ou simplement $input.click()
.
Si vous avez un gestionnaire de clics sur chaque entrée mais que vous voulez faire quelque chose sur un élément spécifique:
var $container = $(".ui-popup-container"),
special = 2;
$container.on('click', 'input', function() {
// do something for every input
if($(this).index() == special) {
// your "callback", e.g. the function you want to execute on input:eq2 click
myfunction();
}
}).find('input').eq(special).trigger('click');