我试图使用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函数,并想这样做。
$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');
你需要像这样使用一个匿名函数:
$('.leadtoscore').click(function() {
add_event('shot')
});
你可以像在例子中那样调用它,只是一个没有参数的函数名,就像这样:
$('.leadtoscore').click(add_event);
但是add_event方法不会像它的参数一样得到'shot',而是任何传递给它的回调的点击,这是事件对象本身…所以在这种情况下不适用,但在其他情况下适用。如果需要传递参数,请使用匿名函数…或者,还有另一个选项,使用.bind()并传递数据,就像这样:
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
并在add_event中访问它,像这样:
function add_event(event) {
//event.data.param == "shot", use as needed
}
是的,这是一个旧帖子。不管怎样,有人可能会发现它很有用。下面是另一种向事件处理程序发送参数的方法。
//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});