как решить ошибку "имеет не функция"? - PullRequest
1 голос
/ 19 апреля 2020

Я хочу получить элементы, которые содержат проверенный ввод. Я получил все элементы, используя for of и попробовал этот код, но он выдал ошибку has is not a function.

В чем проблема? Пожалуйста, помогите мне, спасибо.

Вот мой код:

for (const x of allDiv) {
  if (x.has($('input').is(':checked'))){ 
    console.log(x.parentElement.textContent)
  }
}

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

is() возвращает логическое значение, поэтому ваш код ищет значение true / false в пределах x, которое, как мне кажется, не соответствует вашей цели. Использование for / of для итерации того, что предположительно является элементом Element или jQuery, также немного подозрительно.

Более эффективный способ достичь того, что вам требуется, - это выбрать элементы напрямую. ,

// this assumes 'allDiv' is a jQuery object holding multiple 'div' elements
allDiv.filter(':has(:checkbox:checked)').each(function() {
  console.log($(this).text());
})
0 голосов
/ 19 апреля 2020

Поскольку jQuery не так популярен, как раньше, вот ванильная JavaScript версия.

Найдите все элементы, которые содержат дочерние элементы, которые являются проверенными входными данными:

  function parentsOfCheckedInputs() {
    const parents = new Set();
    const inputs = document.getElementsByTagName('input');
    for (const input of inputs) {
      if (input.checked) {
        parents.add(input.parentElement);
      }
    }
    // return array of DOM elements
    return [...parents];
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...