用params调用用户定义的函数

时间:2010-07-28 00:46:35

标签: jquery function

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

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

然后我想稍后在文档中调用它:

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

但它不起作用。

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

6 个答案:

答案 0 :(得分:6)

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

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

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

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

然后,对于您的函数定义,您只需

function func1() { }

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

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

答案 1 :(得分: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!
};

修改

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

答案 2 :(得分:1)

应该是

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

答案 3 :(得分:1)

这是一个简单的例子:

确保使用function定义您的功能。然后当你想在jQuery中调用它时,you should use an inline function within click()

<div>Click Me!</div>
<div>Pick this one!</div>
<script type="text/javascript">   
function func1(aaa, bbb) 
{ 
    alert('You clicked the DIV that said: "' + aaa.innerHTML + '" and ' + bbb); 
};          
$('div').click(function ()
{
    func1(this, "that's ok.");
});
</script>        

答案 4 :(得分:0)

由于$('#some_id').click(func1($this));定义,您无法像.click(handler(eventObject))那样执行此操作...如果您这样称呼它,$this中的func1($this)将被视为eventObject

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

demo

例如..

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);

答案 5 :(得分:0)

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

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

  return func1(arg1, arg2);
});

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

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