在jquery中将元素传递给函数而没有匿名函数

时间:2013-10-28 07:55:23

标签: jquery anonymous-function

作为标题,有没有办法在不使用匿名函数的情况下将元素传递给函数?

或换句话说:

我知道我可以将元素传递给函数,如下所示:

function fakeFunction(elementReceived){
    elementReceived.hide();
}
$(".class-x").each(function(){
    fakeFunction($(this));
});

这是不可接受的,因为我需要防止使用匿名函数,因为测试中存在一些问题。

所以我写了这样的话:

function fakeFunction(){
    $(this).hide();
}
$(".class-x").each(fakeFunction);

这样做更好但​​是可读性降低了,因为实际代码中的函数离调用行很远,并且直接使用$(this)会让人感到困惑。

我被告知(并被要求调查)以下内容应该是可能的:

function fakeFunction(elementReceived){
    elementReceived.hide();
}
$(".class-x").each(fakeFunction, $(this));

但是上面代码中的$(this)反而传递了整个文档.....应该用什么方法编写呢?

1 个答案:

答案 0 :(得分:3)

如果你看the documentation for each,你会看到函数的第二个参数是元素(例如,与this相同)。所以:

function fakeFunction(index, element){
    $(element).hide();
}
$(".class-x").each(fakeFunction);

(当然,在这种特殊情况下,您可以$(".class-x").hide();,但我认为fakeFunction实际上做了其他事情。)