如何在jquery而不是anon函数中传递带有参数的命名函数?

时间:2014-02-09 01:01:54

标签: javascript jquery

是否可以将带参数的命名函数作为参数传递给jquery函数而不是匿名函数。这就是我想要做的事情:

$('body').bind("click", saySomething);

function saySomething(word)
{
    console.log(word);
}

现在我认为我说我不能在jQuery调用中将括号添加到saySomething参数中,所以如何传入参数?

注意:这可能是另一个问题的重复,但是在尝试向SO和Google解释这个问题时难以理解,我发布了这个问题。

4 个答案:

答案 0 :(得分:2)

$('body').bind("click", function(){saySomething(par);});

这样的东西?

答案 1 :(得分:2)

您正在做的事情非常好,因为click事件将event对象作为第一个参数传递,word函数中的变量saySomething将是event对象。

如果你想自己定义哪个单词,就没有办法将它包装在其他函数中,并用你想要的值调用它。

答案 2 :(得分:1)

是的,您可以使用$.proxy或原生.bind method,但this将不再设置为正确的元素:

$('body').bind("click", $.proxy(saySomething, null, 'hello'));

答案 3 :(得分:1)

  

背后的原因是,如果我想绑定一些元素   对于相同的行为,我想我可以将它封装在一个函数中   并且只是参考它

你仍然可以参考相同的函数调用,它只是更冗长一点。没有办法解决这个问题。

$('.item1').bind("click", function(e){ saySomething('one'); }); 
$('.item2').bind("click", function(e){ saySomething('two'); }); 
$('.item3').bind("click", function(e){ saySomething('three'); }); 

此外,您在评论中的示例似乎对我有用。