【问题标题】:$('elems').each() with fat arrow$('elems').each() 带有粗箭头
【发布时间】:2016-08-01 14:44:51
【问题描述】:
我开始使用 ES6 粗箭头函数表示法,我非常喜欢它。但我对它的上下文有点困惑。据我所知,胖箭头函数中的关键字 this 是指函数当前运行的上下文。我想做一些简单的 jQuery 迭代,比如:
$('ul#mylist > li').each(() => {
$(this).addClass('some-class-name');
});
但显然这段代码不起作用。如何在胖箭头函数中引用此特定代码中的当前“LI”元素?
【问题讨论】:
标签:
javascript
ecmascript-6
arrow-functions
【解决方案1】:
each() 方法为回调函数提供两个参数。它们是当前索引和当前项目。因此,您可以执行以下操作:
$('ul#mylist > li').each((i, v) => {
$(v).addClass('some-class-name');
});
其中“v”变量是当前的“li”元素
【解决方案2】:
因为箭头函数上下文中的this与调用上下文相同。
each 函数提供一个当前元素作为回调的第二个参数,所以
$('ul#mylist > li').each((i, el) => {
$(el).addClass('some-class-name');
});
或者在给定的情况下不需要循环
$('ul#mylist > li').addClass('some-class-name');