Вы не можете вернуть значение из триггера, но вы можете хранить информацию разными способами, один из способов - использование объекта в качестве параметра:
//event
$("element").on("click", function(event, informationObj) {
informationObj.userId = 2; //you have to access a propery so you can modify the original object
});
//trigger
var informationObj = {userId : 0};
$("element").trigger("click", [informationObj ]); //informationObj.userId === 2
, другой способ - использование метода jQuerys .data()
.
//event
$("element").on("click", function() {
$(this).data("userId", 2);
});
//trigger
$("element").trigger("click").data("userId") //2
Другая вещь, которую вы можете сделать, - это изменить переменную, объявленную вне события, и затем использовать ее после вызова триггера, или , сохраняя ее как свойство в элементе, который имеетсобытие с ключевым словом this
, например:
//inside the event function
this.userId = 2;
//outside the event
$("element").trigger("click").get(0).userId
Надеюсь, это поможет.
Редактировать:
Также взгляните на @ Arm0geddon ответ ниже, используя .triggerHandler()
, просто имейте в виду, что у него есть некоторые побочные эффекты, например, не всплывает иерархия DOM.