Я использую триггерный вызов, чтобы получить значение из настраиваемого события, но я хочу, чтобы он возвращал значение, и оно дает мне объект Object только тогда, когда я выполняю следующий вызов:
var user_id=$("#my_div").trigger("get_id", [username]);
Моя функция события триггера выглядит так:
$("#my_div").on("get_id", function(e, username){
var user_id;
if (username='fred'){
user_id=1;
}
else if(username='mario'){
user_id=2;
}
return user_id;
});
Что вы можете сделать, это использовать .triggerHandler()
вместо .trigger()
. Это вернет значение.
var user_id=$("#my_div").triggerHandler("get_id", [username]);
Функция trigger
не возвращает значение, которое вы возвращаете из обработчика событий.
Возвращает jQuery object
...
.trigger (eventType [, extraParameters]) Возвращает: jQuery
Это было разработано, чтобы вы могли писать такие вещи, как это :
$("#my_div").trigger("get_id", [username]).val('foo').css('color', 'red');
triggerHandler - правильный ответ, но стоит отметить, что я еще не видел его здесь ... Вы также можете передать другой обратный вызов, и ваша функция «on» вызовет переданный обратный вызов, чтобы установить некоторое возвращаемое значение и т.д. при условии, что по какой-то причине лучше не ждать.