1

我有一个 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,无法升级。

4

2 回答 2

1

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

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

jsFiddle

另外,请注意,由于此“完成”是您创建的自定义事件,因此与任何 UI(本机)事件无关,因此调用 usingtriggerHandler而不是trigger.

于 2012-07-19T11:11:54.220 回答
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/

于 2012-07-19T11:19:56.343 回答