使用jQuery对象调用jQuery触发器

时间:2012-07-19 11:01:23

标签: jquery events javascript-events triggers bind

我有一个jQuery对象,我想传递给jQuery.trigger。绑定函数应该接收此对象并对其执行某些操作。但是,似乎绑定函数接收DOM节点而不是传递给触发器的完整jQuery对象。

示例:

var doSomething = function(event, object) {
    object.myPluginFunction(); 
}

$("#selector").bind("finished", doSomething);

var myObject = $("#table").myPlugin();
$("#selector").trigger("finished", myObject);

问题是:在doSomething我无法访问object.myPluginFunction ...收到的对象实际上并不是一个对象。相反,它是一个DOM节点。在我看来,就像jQuery剥离它。

有没有办法获得访问权限,而无需调用$ .myPlugin或引入回调?

我使用的是jQuery 1.4.1,无法升级。

2 个答案:

答案 0 :(得分:1)

您需要在数组中调用触发器参数

$("#selector").trigger("finished", [myObject]);​

jsFiddle

另请注意,由于此“已完成”是您创建的自定义事件,因此与任何UI(本机)事件无关,因此使用triggerHandler而不是trigger进行调用更为正确

答案 1 :(得分:0)

另一个例子:

var obj = (function() {
    var that = {};
    var name = "toto";

    that.getName = function() {
        return name;    
    };

    return that;
})();

$("#btnTest").bind("customEvent", function(evt, obj) {
    console.log(obj.t1.getName());
});

$("#btnTest").click(function() {
    $("#btnTest").trigger("customEvent", {t1: obj});
});

jsFiddle:http://jsfiddle.net/EJLwu/3/