0

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

或者换句话说:

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

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) 反而传递了整个文档.....应该用什么正确的方法来编写它?

4

1 回答 1

3

如果您查看的文档each,您会看到该函数的第二个参数是元素(例如,与 相同this)。所以:

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

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

于 2013-10-28T08:01:07.340 回答