Jquery:从触发器返回值

前端之家收集整理的这篇文章主要介绍了Jquery:从触发器返回值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用触发器调用自定义事件获取值,但是我希望它返回一个值,并且当我进行以下调用时,它只给我Object 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

另一种方法是使用jQuerys .data()方法

//event
$("element").on("click",function() {
     $(this).data("userId",2); 
});
//trigger
$("element").trigger("click").data("userId") //2

您可以做的另一件事是修改在事件之外声明的变量,然后在调用触发器之后使用该变量,或将其作为属性存储在具有此关键字的事件的元素中,如下所示:

//inside the event function
this.userId = 2;

//outside the event
$("element").trigger("click").get(0).userId

希望它有帮助。

编辑:

另外,看看下面的@Arm0geddon answer,使用.triggerHandler(),只要注意它有一些副作用,就像没有冒泡的DOM层次结构。

原文链接:https://www.f2er.com/jquery/183122.html

猜你在找的jQuery相关文章