我有这个功能:
$(".tabstrip li").each(function () {
$(this).attr("id") == "searchlist" ? $(this).addClass("selected") : $(this).removeClass("selected");
})
现在我问自己,我是否可以缩短它。所以我尝试了这个:
$(".tabstrip li").each(() => $(this).attr("id") == "searchlist" ? $(this).addClass("selected") : $(this).removeClass("selected"))
它不起作用。我如何理解箭头功能这应该是正确的。
(也没有错误)
有人理解这个吗?它不重要,但我不能睡觉,直到我弄清楚为什么这不起作用;)
感谢您的时间^^
答案 0 :(得分:3)
箭头函数在其中设置this
的值,使其与它们之外的this
的值相同。
这会破坏您的代码,因为each
调用的常规函数的值将为this
,基于当前循环的值(并且您的函数取决于具体情况)。< / p>
不要使用箭头功能&#34;使代码缩短&#34;。这不是他们的目的。箭头函数用于控制this
的值。
答案 1 :(得分:0)
你可以像这样短。我不认为使用ES6 Arrow Functions
最适合浏览器支持。
$(".tabstrip li").each(function () {
$(this).toggleClass("selected", this.id == "searchlist");
})