2016-04-11 8 views
11

Я начал использовать обозначение функции стрелки ES6, и мне это очень нравится. Но я немного смущен этим контекстом. Насколько мне известно, ключевое слово this in fat arrow function относится к контексту, в котором функция в настоящее время работает. Я хотел сделать простую итерацию jQuery, например:

$('ul#mylist > li').each(() => { 
    $(this).addClass('some-class-name'); 
}); 

Но очевидно, что этот фрагмент кода не работает. Как я могу ссылаться на функцию внутренней жирной стрелки на текущий элемент «LI» в этом конкретном коде?

спасибо.

ответ

20

каждый() поставляет метод два параметра для функции обратного вызова. Это текущий индекс и текущий элемент. Таким образом, вы можете сделать следующее:

$('ul#mylist > li').each((i, v) => { 
    $(v).addClass('some-class-name'); 
}); 

Если переменная «v» является текущий элемент «литий»

3

Потому что this в контексте функции стрелки - это то же самое, что и вызывающий контекст.

each функция обеспечивает текущий элемент в качестве второго аргумента функции обратного вызова, так

$('ul#mylist > li').each((i, el) => { 
    $(el).addClass('some-class-name'); 
}); 

Или в данном случае нет необходимости в петлю

$('ul#mylist > li').addClass('some-class-name');