我正在使用触发器调用从自定义事件中获取值,但我希望它返回一个值,并且当我执行以下调用时它只给我 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;
});
您无法从触发器返回值,但可以通过多种不同的方式存储信息,其中一种方法是使用对象作为参数:
//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
另一种方法是使用 jQuery.data()
method
//event
$("element").on("click", function() {
$(this).data("userId", 2);
});
//trigger
$("element").trigger("click").data("userId") //2
您可以做的另一件事是修改在事件外部声明的变量,然后在调用触发器后使用它,or将其作为属性存储在具有事件的元素中this
像这样的关键字:
//inside the event function
this.userId = 2;
//outside the event
$("element").trigger("click").get(0).userId
希望能帮助到你。
Edit:
另外,看看@Arm0geddon 回答 https://stackoverflow.com/a/15014591/437049下面,使用.triggerHandler()
,只是要注意它有一些副作用,比如不会向上冒泡 DOM 层次结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)