Ответ 1
Когда вы вызываете trigger
, обработчик связанного события немедленно выполняется, поэтому вам не требуется обратный вызов. Просто используйте
$input.trigger('click');
runtests();
Мне нужно вызвать пользовательское событие в обратном вызове вызова trigger
, но я не могу заставить его работать.
Я пробовал это:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
function runtests () {
console.log("clicked the input");
};
$input.trigger('click', runtests());
и это:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
$input.trigger('click', function(){
console.log("clicked the input");
}
Ни один из них не работает.
Вопрос:
Как получить функцию обратного вызова для запуска, когда я запускаю щелчок по элементу?
Когда вы вызываете trigger
, обработчик связанного события немедленно выполняется, поэтому вам не требуется обратный вызов. Просто используйте
$input.trigger('click');
runtests();
Сначала вам нужно связать событие click, а затем вы можете вызвать событие click.
$input.bind('click', function() {
console.log("clicked the input");
});
$input.trigger('click');
Да. Это правда, что триггер не принимает обратный вызов, но мы можем передать обратный вызов как параметр.
//.trigger( eventType [, extraParameters ] )
$("#element").bind("customCall", function(e, callback){
callback();
}
var callback = function(){alert("Hello");}
$("#element").trigger("customCall",[callback]);
Надеюсь, это поможет
Триггер не имеет функции обратного вызова.
.trigger( eventType [, extraParameters ] )
Что вы можете сделать
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
$input.on('click',function(){
console.log("clicked the input");
});
Вам нужно использовать bind
или on
для добавления обратных вызовов. В вашем случае это должно выглядеть так:
var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
function runtests () {
console.log("clicked the input");
};
$input.bind('click', runtests);
Еще более короткая версия для привязки - $input.click(runtests)
Затем он будет вызван щелчком или вы можете запустить его вручную с помощью $input.trigger('click')
или просто $input.click()
.
В Trigger нет функции обратного вызова - вы можете лучше написать свой код, чтобы использовать метод ..
$("body").on("click", "#click", function() {
alert("Clicked!");
});
Если у вас есть обработчик кликов на каждом входе, но вы хотите что-то сделать для определенного элемента:
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');