Подтвердить что ты не робот

Как запустить функцию обратного вызова при запуске jQuery ("click")?

Мне нужно вызвать пользовательское событие в обратном вызове вызова 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");
}

Ни один из них не работает.

Вопрос:
Как получить функцию обратного вызова для запуска, когда я запускаю щелчок по элементу?

4b9b3361

Ответ 1

Когда вы вызываете trigger, обработчик связанного события немедленно выполняется, поэтому вам не требуется обратный вызов. Просто используйте

$input.trigger('click');
runtests();

Ответ 2

Сначала вам нужно связать событие click, а затем вы можете вызвать событие click.

$input.bind('click', function() {

     console.log("clicked the input");
});

$input.trigger('click');

Ответ 3

Да. Это правда, что триггер не принимает обратный вызов, но мы можем передать обратный вызов как параметр.

//.trigger( eventType [, extraParameters ] )

$("#element").bind("customCall", function(e, callback){
   callback();
}
var callback = function(){alert("Hello");}
$("#element").trigger("customCall",[callback]);

Надеюсь, это поможет

Ответ 4

Триггер не имеет функции обратного вызова.

.trigger( eventType [, extraParameters ] )

Official Document

Что вы можете сделать

var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);

$input.on('click',function(){
   console.log("clicked the input");
});

Ответ 5

Вам нужно использовать 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().

Ответ 6

В Trigger нет функции обратного вызова - вы можете лучше написать свой код, чтобы использовать метод ..

$("body").on("click", "#click", function() {
   alert("Clicked!"); 
});

JSFiddle.

Ответ 7

Если у вас есть обработчик кликов на каждом входе, но вы хотите что-то сделать для определенного элемента:

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');