我目前正在使用Jquery 1.4.3。我知道有更新版本,但为了与现有软件兼容,我们还没有更新库。
我试图获取一些使用trigger()函数传递的数据。触发器功能有以下参数:
.trigger( eventType [, extraParameters ] )
我想从.click()函数中获取这些参数:
.click( handler(eventObject) )
我不知道如何获得这些或者如果我可以使用触发器来启动事件和一些参数并使用点击监听器我可以得到那些。有人知道我是否可以使用该组合发出事件和检索参数?
我尝试的方式是这样的:
$("#id").trigger('click', ObjectToPass);
并且监听器将定义如下:
$("#id").click(function(event){...})
我错过了什么?
答案 0 :(得分:5)
如果你打电话:
$("#id").trigger('click', ObjectToPass);
然后ObjectToPass
是passed as an extra parameter到事件处理程序:
参数数组也可以传递给
.trigger()
调用,这些参数也将传递给处理程序以及事件对象
所以你可以像这样检索你的数据:
$("#id").click(function(event, data) {
// data contains "ObjectToPass"
...
})
请参阅http://jsfiddle.net/alnitak/QXZ8K/
注意:jQuery文档似乎不一致。虽然上面引用的文字仅涉及数组,但函数规范说“ extraParameters :
输入:Array
或PlainObject
“
传递一个对象似乎在最近的jQuery版本中工作正常,但可能在1.4.3中不起作用。在早期版本中,您可能需要编写.trigger(e, [ ObjectToPass ])
。
答案 1 :(得分:1)
查看@greut评论或更多解决方案:
var clickEvent = new $.Event('click');
clickEvent.YourParameter = YourParameterValue;
$("#id").trigger(clickEvent);
并在处理程序中获取此参数:
function(event) { alert(event.YourParameter); }