Подтвердить что ты не робот

JQuery определяет, имеет ли ul класс ИЛИ другой

Каков правильный способ определить, имеет ли объект один класс или другой? Непонятно, что следующее:

if ($('#menu-item-49').hasClass('current-menu-item' || 'current-menu-parent') ) {
  $('ul.sub-menu ').css('display', 'block');
}

Спасибо!

4b9b3361

Ответ 1

Вместо этого вы можете использовать is?

if ($('#menu-item-49').is('.current-menu-item, .current-menu-parent')) {
  $('ul.sub-menu ').css('display', 'block');
}

Проверьте текущий согласованный набор элементы против селектора и возврата true, если хотя бы один из этих элементов соответствует селектору.

Убивает необходимость использования нескольких запросов hasClass, что является альтернативой:

if ($('#menu-item-49').hasClass('current-menu-item') || 
    $('#menu-item-49').hasClass('current-menu-parent')) {
  $('ul.sub-menu ').css('display', 'block');
}

Ответ 2

Вы не можете использовать оператор || (или) в пределах hasClass. Попробуйте следующее:

if ($('#menu-item-49').hasClass('current-menu-item') || 
    $('#menu-item-49').hasClass('current-menu-parent')) {
  $('ul.sub-menu ').css('display', 'block');
}

Или вы можете сделать это, если это слишком многословно:

var $menuItem = $('#menu-item-49');
if ($menuItem.hasClass('current-menu-item') || 
    $menuItem.hasClass('current-menu-parent')) {
  $('ul.sub-menu ').css('display', 'block');
}

Или даже лучше:

var $menuItem = $('#menu-item-49');
if ($menuItem.is('.current-menu-item, .current-menu-parent')) {
  $('ul.sub-menu ').css('display', 'block');
}

Ответ 3

if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ) {
  $('ul.sub-menu ').css('display', 'block');
}

Вы пробовали следующее?

Ответ 4

Вы также можете использовать .is() для проверки любого класса, начинающегося с current-menu-, используя:

if ( $('#menu-item-49').is('[class]^="current-menu-"') ) {
    //49 is the current menu!
}

Более селектора атрибутов типа ^= можно найти здесь.

Ответ 5

Ниже вы узнаете следующее:

var menuItem49 = $('#menu-item-49');
if (menuItem49.hasClass('current-menu-item') || menuItem49.hasClass('current-menu-parent')) {
    // ...
}

Ответ 6

Так близко!

Try:

if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ) {
  $('ul.sub-menu ').css('display', 'block'); 
}

Ответ 7

Сделайте это так, разделив его на два бита:

if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ){
   $('ul.sub-menu ').css('display', 'block');
}

Надеюсь, это поможет вам