jQuery 的 .click - 将参数传递给用户函数

我试图使用jQuery的.click调用带有参数的函数,但我无法让它工作。

这就是我希望它的工作方式:

$('.leadtoscore').click(add_event('shot'));

哪个调用

function add_event(event) {
    blah blah blah }

如果我不使用参数,它的工作原理,如下所示:

$('.leadtoscore').click(add_event);
function add_event() {
    blah blah blah }

但是我需要能够将参数传递给我的函数。add_event

我该怎么做?

我知道我可以使用,但我从多个地方调用函数,并希望以这种方式执行此操作。.click(function() { blah }add_event


答案 1

为了彻底起见,我遇到了另一个解决方案,它是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);
}

答案 2

您需要使用如下所示的匿名函数:

$('.leadtoscore').click(function() {
  add_event('shot')
});

您可以像在示例中一样调用它,只是一个不带参数的函数名称,如下所示:

$('.leadtoscore').click(add_event);

但是该方法不会像它的参数一样获取,而是传递给它的回调的任何内容,即对象本身...因此,它不适用于这种情况,但适用于许多其他情况。如果需要传递参数,请使用匿名函数...或者,还有一个选项,使用.bind()并传递数据,如下所示:add_event'shot'clickevent

$('.leadtoscore').bind('click', { param: 'shot' }, add_event);

并在 中访问它,如下所示:add_event

function add_event(event) {
  //event.data.param == "shot", use as needed
}