繁体   English   中英

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

[英]How to pass a named function with parameter in jquery instead of anon function?

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

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

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

现在,我想我说对了,我无法在jQuery调用中将括号添加到saySomething参数中,那么如何传递该参数呢?

注意:这可能是另一个问题的重复,但是由于试图向SO和Google解释这个问题的困难之处,我已经发布了此问题。

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

像这样吗

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

如果要定义自己将要使用的单词,则无法将其包装在其他函数中并使用所需的值进行调用。

是的,你可以用$.proxy ,或本地.bind方法 ,但是this将不会再被设置为正确的元素:

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

其背后的原因是,如果我想将多个元素绑定到相同的行为,我想我可以将其封装在一个函数中,然后引用它

您仍然可以引用相同的函数调用,只是稍微有些冗长。 没有办法解决。

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

另外,您在评论中的示例对我来说似乎还可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM