0

我目前正在使用 Jquery 1.4.3。我知道有更新的版本,但为了与现有软件兼容,我们还没有更新库。

我试图获取一些使用 trigger() 函数传递的数据。触发函数有以下参数:

.trigger( eventType [, extraParameters ] )

我想从 .click() 函数中获取这些参数,该函数说:

.click( handler(eventObject) )

我不确定如何获得这些,或者我是否可以使用触发器来启动一个事件和一些参数,并使用点击监听器我可以获得这些。有人知道我是否可以使用该组合来发出事件和检索参数?

我尝试的方式是这样的:

$("#id").trigger('click', ObjectToPass);

并且侦听器将定义如下:

$("#id").click(function(event){...})

我错过了什么?

4

2 回答 2

5

如果你打电话:

$("#id").trigger('click', ObjectToPass);

然后将作为额外参数ObjectToPass传递给事件处理程序:

参数数组也可以传递给.trigger()调用,这些参数也将传递给处理程序以及事件对象

所以你可以像这样检索你的数据:

$("#id").click(function(event, data) {
     // data contains "ObjectToPass"
     ...
})

http://jsfiddle.net/alnitak/QXZ8K/

注意:jQuery 文档似乎不一致。虽然上面引用的文本只讨论了数组,但函数规范说“ extraParameters:Type:ArrayPlainObject

在 jQuery 的最新版本中,传递对象似乎可以正常工作,但在 1.4.3 中可能无法正常工作。在早期版本中,您可能需要编写.trigger(e, [ ObjectToPass ]).

于 2013-06-05T10:23:30.583 回答
1

查看@greut 评论或更多解决方案:

var clickEvent = new $.Event('click');
clickEvent.YourParameter = YourParameterValue;
$("#id").trigger(clickEvent);

并在处理程序中获取此参数:

function(event) { alert(event.YourParameter); }
于 2013-06-05T10:16:03.667 回答