用params调用用户定义的函数

我正在定义函数func1(); 我希望它采取一些参数,即

var func1(aaa, bbb){ //do something, anything! }; 

那么我想稍后在doc中调用它:

 $('#some_id').click(func1($this)); 

但它不起作用。

我已经搞砸了一段时间,但jquery / javascript至少处理用户定义函数的方式非常奇怪。 some1能为我提供简单的代码片段吗? 谢谢

如果要传递的只是$(this) ,则不需要参数,因为它将在定义的函数中可用。

 $('#some_id').click(func1); 

但是,您无法添加如下参数:

 $('#some_id').click(func1(param1, param2)); 

然后,对于您的function定义,您只需拥有

 function func1() { } 

如果您确实需要$(this)以外的参数,则需要执行以下操作:

 $('#some_id').click(function () { func1(aaa, bbb); }); 

我假设您正在尝试确保this仍然引用了接收事件的元素。

试一试: http //jsfiddle.net/jKM9s/

 $('#some_id').click(function() { func1.call(this, 'somearg', 'somearg'); }); // now "this" references the element when func1 is called function func1(aaa, bbb){ //do something, anything! }; 

编辑:

如果你想要的只是引用了被点击的元素,那么请参阅@ phoffer的第一个解决方案。

它应该是

 function func1(aaa, bbb) { ... } 

这是一个简单的例子:

确保使用function定义function 。 然后,当你想在jQuery中调用它时, 你应该在click()使用内联函数 。

 
Click Me!
Pick this one!

在Javascript中,您无法同时分配函数和传递参数。 使用匿名函数…

 $('#some_id').click(function() { var arg1 = $(this); var arg2 = 'whatever'; return func1(arg1, arg2); }); 

如果您需要的唯一参数是,请指定函数参考…

 $('#some_id').click(func1); 

你不能像$('#some_id').click(func1($this));那样做$('#some_id').click(func1($this)); 因为.click(handler(eventObject))定义…如果你这样调用它, func1($this)将被期望作为eventObject

为此,您可以使用.bind()event.data

演示

例如..

 function sum(event) { alert(event.data.x + event.data.y); // `this` here would refer to the element calling this function // for example, $(this).attr('id') would return `someID` if called below } 

称之为

 $('#someID').bind('click',{x:4, y:5}, sum);