我试图使用jQuery的.click调用带有参数的函数,但我不能让它工作。
这就是我想要的工作方式:
$ (' .leadtoscore ') .click (add_event('照片'));
这电话
function add_event(event) {
blah blah blah }
如果我不使用参数,它就会工作,就像这样:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
但是我需要能够将参数传递给add_event函数。
我该怎么做这件事呢?
我知道我可以使用.click(function() {blah},但我从多个地方调用add_event函数,并想这样做。
我成功地像这样使用.on():
$('.leadtoscore').on('click', {event_type: 'shot'}, add_event);
然后在add_event函数中,你可以像这样访问'shot':
event.data.event_type
有关更多信息,请参阅.on()文档,其中提供了以下示例:
function myHandler( event ) {
alert( event.data.foo );
}
$( "p" ).on( "click", { foo: "bar" }, myHandler );
$imgReload.data('self', $self);
$imgReload.click(function (e) {
var $p = $(this).data('self');
$p._reloadTable();
});
设置javaScript对象为onclick元素:
$imgReload.data('self', $self);
从"this"元素获取对象:
var $p = $(this).data('self');
为了彻底起见,我遇到了另一个解决方案,它是jQuery点击事件处理程序1.4.3版本中引入的功能的一部分。
它允许您将数据映射传递给事件对象,该对象将自动作为第一个参数由jQuery反馈给事件处理程序函数。数据映射将作为第一个参数传递给.click()函数,然后是事件处理程序函数。
下面是一些代码来说明我的意思:
// say your selector and click handler looks something like this...
$("some selector").click({param1: "Hello", param2: "World"}, cool_function);
// in your function, just grab the event object and go crazy...
function cool_function(event){
alert(event.data.param1);
alert(event.data.param2);
}