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函数,并希望这样做。 
为了彻底,我遇到了另一个解决scheme,它是jQuery click事件处理程序的 1.4.3版本中引入的function的一部分。
 它允许你传递一个数据映射到事件对象,通过jQuery作为第一个参数自动返回到事件处理函数。 数据映射将作为第一个parameter passing给.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); } 
我知道这个问题在游戏中已经晚了,但是之前的答案让我想到了这个解决scheme,所以我希望它能帮助别人!
你需要使用这样的匿名函数:
 $('.leadtoscore').click(function() { add_event('shot') }); 
您可以像在示例中那样调用它,只是一个不带参数的函数名称,如下所示:
 $('.leadtoscore').click(add_event); 
 但add_event方法不会因为它的参数而被'shot' ,而是无论click传递给它的callback函数( event对象本身),所以在这种情况下它不适用,但是适用于其他许多方法。 如果您需要传递参数,请使用匿名函数…或者,还有一个选项,使用.bind()并传递数据,如下所示: 
 $('.leadtoscore').bind('click', { param: 'shot' }, add_event); 
 并在add_event访问它,如下所示: 
 function add_event(event) { //event.data.param == "shot", use as needed } 
如果你这样称呼它的话
 $('.leadtoscore').click(add_event('shot')); 
  …你需要有add_event()返回一个函数,如… 
 function add_event(param) { return function() { // your code that does something with param alert( param ); }; } 
 该函数被返回并用作.click()的参数。 
我已经成功使用.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 ); 
是的,这是一个旧post。 无论如何,有人可能会觉得它有用。 这是将参数发送给事件处理程序的另一种方法。
 //click handler function add_event(event, paramA, paramB) { //do something with your parameters alert(paramA ? 'paramA:' + paramA : '' + paramB ? ' paramB:' + paramB : ''); } //bind handler to click event $('.leadtoscore').click(add_event); ... //once you've processed some data and know your parameters, trigger a click event. //In this case, we will send 'myfirst' and 'mysecond' as parameters $('.leadtoscore').trigger('click', {'myfirst', 'mysecond'}); //or use variables var a = 'first', b = 'second'; $('.leadtoscore').trigger('click', {a, b}); $('.leadtoscore').trigger('click', {a}); 
  $imgReload.data('self', $self); $imgReload.click(function (e) { var $p = $(this).data('self'); $p._reloadTable(); }); 
将javaScript对象设置为onclick元素:
  $imgReload.data('self', $self); 
从“this”元素获取Object:
  var $p = $(this).data('self');