JQuery не является функцией при использовании .has()

У меня есть этот простой код jQuery

function removePreloader() {
    jQuery('ul.woocommerce-error').has('li').jQuery("#preloader").css("display", "hidden");
}

и это вызывается

jQuery('form[name = "checkout"]').submit(function(e) {
    ... // lots of line
    setTimeout(removePreloader(), 2000);
}

оба блока кодов внутри jQuery(document).ready(function() { ... });

другой jQuery() работает нормально, только этот вызывает проблемы и показывает

Uncaught TypeError: jQuery(...).has(...).jQuery is not a function

нельзя ли использовать .has? или есть альтернатива? потому что эта тема WordPress использует много старых плагинов, поэтому они не могут принять более новую версию jQuery.

Спасибо

вот скриншот из jquery.com

JQuery не является функцией при использовании .has()

Я просто пытаюсь следовать этому javascript и немного изменил его, пожалуйста, дайте мне знать, как это сделать правильно, потому что я никогда раньше не кодировал javascript.

Это неверный оператор jQuery jQuery('ul.woocommerce-error').has('li').jQuery("#preloader"‌​).css("display", "hidden"); чего вы хотите добиться?

Zakaria Acharki 11.06.2019 17:15

какая у вас версия jquery? .началась в 1.4 - похоже, они пытаются что-то скрыть, когда возникает ошибка woo commerce

Andrew 11.06.2019 17:16

Случайный jQuery в этой строке: ....has('li').jQuery("#preloader").css(... вызывает проблему. Что вы ожидаете от него? Вы имели в виду find() вместо этого?

Rory McCrossan 11.06.2019 17:17

Я хочу, чтобы preloader исчез, когда к ul.woocommerce-error добавляется ошибка, ошибка будет в теге li, поэтому я хочу, чтобы если ошибка woocommerce имеет дочерний элемент li, то отображение div предварительного загрузчика скрыто

Khrisna Gunanasurya 11.06.2019 17:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
349
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Uncaught TypeError: jQuery(...).has(...).jQuery is not a function

означает, что .jQuery не является функцией возвращаемого объекта .has(). Это также означает, что .has() здесь работает отлично. Вместо этого попробуйте использовать .найти().

@Pete неправда, has() возвращает объект jQuery

Rory McCrossan 11.06.2019 17:19

@ Пит Нет? он возвращает объект jquery Description: Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.

Xatenev 11.06.2019 17:19

Привет, я хотел попробовать использовать ваше решение, find() также возвращает логическое значение?

Khrisna Gunanasurya 11.06.2019 17:28

@KhrisnaGunanasurya Нет. .find() возвращает согласованный набор элементов точно так же, как это делает jQuery(), и, возможно, именно то, что вы ожидали здесь.

Xatenev 11.06.2019 17:30
Ответ принят как подходящий

Вы используете неверный оператор jQuery .jQuery..., я бы предложил использовать оператор if при проверке наличия в списке дочерних элементов li, например:

function removePreloader() {
    if ( jQuery('ul.woocommerce-error li').length ){
       jQuery("#preloader").css("display", "none");
    }
}

Свойство ПРИМЕЧАНИЕ 1:display не имеет значения hidden, поэтому вместо этого вы ищете none.

ЗАМЕТКА 2: Удалите () в вызове функции, например:

setTimeout(removePreloader, 2000);

Я только что попробовал использовать ваше решение, но оно не работает, я даже поставил alert(), чтобы убедиться, что условие if верно, и, поскольку оно не работает, я вношу изменения в это jQuery('ul.woocommerce-error li').length > 0, но все равно не повезло

Khrisna Gunanasurya 11.06.2019 17:25

добавьте предупреждение перед if, чтобы убедиться, что removePreloader() достигнуто.

Zakaria Acharki 11.06.2019 17:27
setTimeout(removePreloader(), 2000); вместо этого должно быть setTimeout(removePreloader, 2000);, обратите внимание на удаление ()
Zakaria Acharki 11.06.2019 17:28

ах, я вижу, здесь я ошибаюсь, поэтому это не работает, спасибо

Khrisna Gunanasurya 11.06.2019 17:31

Другие вопросы по теме