desandro / imagesloaded

:camera: JavaScript is all like "You images done yet or what?"

Home Page:https://imagesloaded.desandro.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

obj is not iterable

Craigy- opened this issue · comments

After updating this script from 4.1.0 to 5.0.0 without any changes of initialization code, it's now thrown error and doesn't work:

Uncaught TypeError: obj is not iterable

Initialization code:

$('.js-b').each(function () {
    console.log($(this));
    $(this).imagesLoaded().done(function () {
      ...
    });
});

console.log => Object { 0: div.all-b.vertical-b.js-b, context: div.all-b.vertical-b.js-b, length: 1 }

@Craigy-
I was having the same issue.

I made a simple test with the jquery version of images loaded with a simple container loading a number of images as immediate children and was still getting the 'obj not iterable' error.

I just went in and updated the code in the in the script to use the Object.values() method to convert to an array so that I didn't run into the iterable issue with the Object.

I updated this
if (isArrayLike) return [...obj];
To this
if (isArrayLike) return Object.values(obj);

And all is working now,