@Viktor091

Как дождаться завершение $.each()?

Всем добрый день!

Помогите пожалуйста разобраться с функцией:
let typeKMU = function() {
    let div = $(display).find('div.typeKMU');
    let typeKMU = null;
 
    $.each(div, function() {
        if ($(this).find('p').find('span').css('background-image') !== "none") {
            typeKMU = $(this).find('p').text();
 
            return false;
        }
     })
 
     return typeKMU;
 }


Функция работает через раз. То есть переменной typeKMU значение присваивается раз через раз. Я так понимаю, что функция возвращает значение переменной не дожидаясь окончание each, и соответственно иногда успевает его присвоить, а иногда нет.

И пользуясь случаем разъясните пожалуйста разницу между
div.each(function() {});
и
$.each(div, function() {});
  • Вопрос задан
  • 187 просмотров
Решения вопроса 1
@mletov
А зачем тут вообще $.each ?
Как я понимаю, из функции требуется получить одно значение innerHTML из последнего элемента p, удовлетворяющему определенному условию.

Есть так, то используйте функцию .last()

PS Пожалуйста, постарайтесь не давать одинаковых имен (я про typeKMU), запутывает. Функцию можно было назвать, к примеру, getTypeKMU.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Включите отладчик. И пройдитесь пошагово по вашему скрипту. Вот и увидите что, в каком месте, в какой последовательности запускается и как отрабатывает.
https://learn.javascript.ru/debugging-chrome
Ответ написан
Комментировать
@Viktor091 Автор вопроса
Вообщем вся полемика свелась к одной строчке кода

$(display).find('div.typeKMU').find('span.okTypeKMU').closest('p').text();


Эта строчка возвращает то, что должна была вернуть функция, пришлось немного изменить логику и вместо добавления свойств css добавить класс. Спасибо mletov, натолкнул на мысль)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы