我有一个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,无法升级。
答案 0 :(得分:1)
您需要在数组中调用触发器参数
$("#selector").trigger("finished", [myObject]);
另请注意,由于此“已完成”是您创建的自定义事件,因此与任何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/