jQuery, если hasClass не работает
Я борюсь с проверкой, есть ли у элемента определенный класс и таким образом выполняет действие. Мне удается показать элемент (но не скрыть его), но как только я применяю оператор IF, он больше не работает.
4 ответа
Проблема в вашем коде проистекает из условий, вы не используете оператор else , поэтому оба условия сработают, если ваш элемент имеет класс hidemenu«and the class will be changed two times, the first condition will add the class showmenu and the second condition will remove it, so please add the else` в вашей логике:
НЕ: . Эффективный способ — использовать toggleClass() :
Надеюсь это поможет.
Намного чище код с toggleClass
Вместо того, чтобы использовать несколько классов, просто предположите, что скрытый статус — это статус вашего меню по умолчанию. Затем все, что вам нужно, это применить один класс, чтобы фактически переключить меню.
Надеюсь, что это поможет вам. 🙂
Проблема с вашей логикой заключается в том, что у вас есть два отдельных оператора if . Первый добавляет класс showmenu , если его еще не было в элементе. Затем второй обнаруживает, что класс, который вы только что добавили, теперь находится в элементе, и снова удаляет его. Конечным результатом является то, что ничего не происходит.
Чтобы исправить это, либо объедините логику с одним оператором if/else , либо, что еще лучше, используйте toggleClass() , например так:
Обратите внимание на использование ненавязчивого обработчика событий, а также указание только свойства CSS opacity для анимации вместо предоставления all .
Источник
JQuery hasClass не работает или ошибочно, если заявление
Я работаю над игрой на линкоре. Текущая функция genShips должна проверять, отмечен ли div с координатами x: y и его окрестностями. Если они помечены, попробуйте новые x и y, если они не помечены, то есть рядом нет кораблей, а затем поместите корабль на x: y, x + 1: y. Корабли всегда 1х2 и горизонтальны. Углы могут касаться, но стороны не могут.
И только сама функция.
Generate дает вам нужный размер сетки (выберите из выпадающего меню), и genShips пытается поместить корабль в сетку. Прямо сейчас он просто не видит класс «ship» в div по какой-то причине или в моем условии if ошибочно.
И чтобы лучше объяснить мое утверждение if, оно в основном контролирует, есть ли «корабль» на x; y, вверх, вниз, влево, вправо и вверх вниз и вправо для x2, 2-й блок.
2 ответа
В вашем полном коде
.attr(«class», «ship»); заменяет все классы ( .cell ), оставляя только .ship . поэтому ваш .cell hasClass .ship никогда не будет найден.
Я смотрел на код, пытаясь проработать то, чего ты пытаешься достичь. Я думаю, что это довольно аккуратно / круто. 😉
Я думаю, вы хотите && вместо ||
Не пошел дальше, чтобы проверить правильность логики с &&, но || кажется, не гель со мной.
Попробуйте использовать addClass и removeClass вместо Attr (class, «someclass») , так как последний удаляет также любой другой класс, который может не быть намерение.
Источник
Если hasClass условие не работает jquery
Я пытаюсь выяснить, как Показать/Скрыть элемент в зависимости от того, имеет ли элемент «.question a» класс «checked» или нет. Но это не работает. Кто-нибудь знает, почему ; (?
4 ответа
Условие должно выполняться только в том случае, если щелкнутый элемент не имеет класса agallery или aslide . Это не работает для меня. if(!$(this).hasClass(‘agallery’) || !$(this).hasClass(‘aslide’)) < //do certain things >
У меня есть 2 дива: .left и .right . Что я хочу, так это то, что когда класс .active не связан с этими дивами, то включите функцию .hover. Он делает это, если: if (!($(#panel-left).hasClass(active) || $(#panel-right).hasClass(active))) <> Но это не работает, если я изменяю это условие на true или.
Если вы хотите изменить статус ссылки, то вызовите то же самое, когда ваше событие сработает, как
Repalce
С
добавить $ перед myLink
Похожие вопросы:
Я борюсь с проверкой того, имеет ли элемент определенный класс и, таким образом, выполняет действие. Я могу показать элемент (но не скрыть его), но как только я применяю оператор IF, он больше не.
Я пытался выполнить некоторые оповещения с некоторыми событиями onclick и условиями с помощью оператора jquery. Но похоже, что обработчики событий не работают должным образом, вероятно, из-за того.
у меня есть проблема проверить, если hasClass, но я не понимаю, почему это не сработает. Я хочу, чтобы, когда второй DIV внутри другого DIV имеет класс in что-то сделать. jQuery if ( jQuery(.panel.
Условие должно выполняться только в том случае, если щелкнутый элемент не имеет класса agallery или aslide . Это не работает для меня. if(!$(this).hasClass(‘agallery’) ||.
У меня есть 2 дива: .left и .right . Что я хочу, так это то, что когда класс .active не связан с этими дивами, то включите функцию .hover. Он делает это, если: if (!($(#panel-left).hasClass(active).
Я не специалист в jQuery и пытаюсь создать что-то вроде кнопки-тумблера : Когда я нажимаю на кнопку переключения Home/News,, содержимое тоже должно переключаться. Но это, кажется, не работает.
Я пытаюсь узнать, если еще утверждения с jQuery и hasClass. Я сделал простой тест, который не сработает, и я не могу понять, почему. if ($(‘.one’).hasClass(‘left’)) < $('.button').click(function ().
Я пытаюсь сделать так, чтобы при активном любом другом слайде, кроме слайда домашней страницы, он скрывал меню: ocw2018.orangecoastwebsites.com Я использовал этот код: $(document).ready(function ().
Я не знаю, отсутствует ли в функции, которую я пытаюсь создать, какой-то элемент или я что-то упускаю, но моя функция вообще не работает. Не уверен, что что-то упускаю или что-то не добавляю. дайте.
Я хочу показать вложенный ul, если его Родительский li имеет активный класс. Активный класс к li был применен динамически через jquery. Это моя боковая навигация
Источник
jQuery hasClass не работает, проходя через детей
Я пытаюсь найти определенные элементы, если они содержат определенный класс в виджете WordPress. Но я не могу понять, почему authors.hasClass() в порядке, но currentAuthor.hasClass() выдает ошибку, говоря, что это не функция!
2 ответа
Зацикливая объекты в виде массива, вы смотрите на них как на стандартные объекты JavaScript. Поскольку hasClass() является методом jQuery, его можно использовать только для объектов jQuery. Вместо этого вы можете использовать jQuery .each() , где jQuery(this) ссылается на текущий элемент в цикле.
При этом зачем выбирать все элементы li , а затем проверять, есть ли у них активный класс, когда вы можете просто выбрать все активные элементы?
Или, в зависимости от того, что вы делаете, вам может даже не понадобиться each()
Потому что authors[i] возвращает не объект jQuery, а необработанный элемент DOM (поэтому он не имеет методов jQuery, таких как hasClass ). Согласно документации JQuery:
Объект jQuery представляет собой массивоподобную оболочку вокруг одного или нескольких элементов DOM. Чтобы получить ссылку на фактические элементы DOM (вместо объекта jQuery), у вас есть два варианта. Первый (и самый быстрый) метод заключается в использовании записи массива .
Чтобы решить вашу проблему, вы должны обернуть возвращаемый элемент в объект jQuery следующим образом:
var currentAuthor = $(authors[i]);
Или используйте eq метод для получения объекта jQuery из коллекции:
Источник
jquery «hasClass ()» не работает?
Мне нужно скрыть div, если у другого div есть класс.
Я создал очень простой пример ЗДЕСЬ
Мне нужно, чтобы div внизу скрывался, когда слово «щелкнуло» . хорошо . щелкнуло. Он просто добавляет класс в средний div, но кажется, что hasClass() не хочет работать?
ПРИМЕЧАНИЕ. Структура должна быть такой. Если нажата кнопка «click», измените средний div (добавить класс?) И управляйте нижним div на основе среднего div. С этой настройкой — я не могу просто сделать «если щелкнуть CLICK, slideUp () нижний div».
Кроме того, после нажатия «ОК» или «Отмена», он вернется, потому что средний div больше не будет иметь класс. При условии, что это метод, который я могу получить здесь, ха-ха.
6 ответов
Ваш оператор if находится вне какой-либо функции, поэтому нет причин для его вызова после загрузки сценария.
Посмотрите эту скрипку, я думаю, это то, что вы хотите.
Как уже упоминалось, у вас нет вызова if во всех обработчиках событий щелчка. Создайте пользовательскую функцию с оператором внутри if и вызовите ее для всех обработчиков кликов.
Это вызывается только один раз, когда скрипт загружается. Вы должны убедиться, что он вызывается в вашем .click(. ) обработчике.
После добавления класса к элементу DOM это должно правильно скрыть элемент.
Кстати, еще один вариант проверки наличия класса:
Тем не менее, рекомендую hasClass. Просто приятно иногда видеть вариации.
Вы можете объединить их все в одну функцию — и вы хотите, чтобы эта проверка была внутри функций щелчка
Вы можете уменьшить addclass removeclass, используя toggleClass и передав условие
Вы можете изменить это, поменяв логику, переданную в методы toggleClass ()
Источник