用params调用用户定义的函数

GoT*_*imw 6 jquery function

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

var func1(aaa, bbb){
//do something, anything!
};
Run Code Online (Sandbox Code Playgroud)

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

$('#some_id').click(func1($this));
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

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

Pau*_*fer 6

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

$('#some_id').click(func1);
Run Code Online (Sandbox Code Playgroud)

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

$('#some_id').click(func1(param1, param2));
Run Code Online (Sandbox Code Playgroud)

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

function func1() { }
Run Code Online (Sandbox Code Playgroud)

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

$('#some_id').click(function () {
    func1(aaa, bbb); });
Run Code Online (Sandbox Code Playgroud)

  • 当你像这样调用`func1`时,`this`的值不会引用该元素. (2认同)
  • 要清楚,`this`不会引用给出的*last*示例中接收事件的元素.它会在第一个. (2认同)

use*_*716 5

我假设您正在尝试确保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!
};
Run Code Online (Sandbox Code Playgroud)

编辑:

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