0

I am working on some JS with JQuery. I'm trying to get some list items and store them into an array. I can't understand what I'm doing wrong, the problem is explained in the commentaries of the following code.

function getListItems() {
        let items = [];
        const $items = $listElement.children('li');
        $items.each(index => {
            console.log($(this)); // shows an empty array, according to JQuery doc it should show the DOM element
            items.push($($items.get(index)).html()); // Works, but what it would be cleaner to do this : items.push($(this).html())
//... which does not work
        });
        return items;
    }

So my question is why $(this) is an empty array ?

  • 2
    Don't use arrow functions with jQuery. Arrow functions are not what the cool kids use nowadays, they have a very specific purpose. With jQuery, stick to `function`. –  Oct 12 '21 at 14:34
  • 3
    Because you're using an arrow function, which does not allow for redefining the `this`. If you look at the jQuery docs, you'll note they do not use arrow functions for `each`. – Heretic Monkey Oct 12 '21 at 14:34
  • @ChrisG arrow functions *are* what the cool kids are using... but you have to be cool to use them :D – freedomn-m Oct 12 '21 at 14:45
  • Yes this answers my question. Thanks guys ! I think I have to read some documentation about arrow functions, I thought that they were a shorter equivalent to `function`. – petuniaPot42 Oct 12 '21 at 15:34

0 Answers0