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

что состоит в том, чтобы определить правильный путь, имеет ли объект один класс ИЛИ другой? Следующее является appearantly неправильно..

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

Спасибо!

31
задан John Hartsock 7 July 2010 в 16:04
поделиться

7 ответов

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

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

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

Beats вынуждены использовать несколько запросов hasClass , что является альтернативой:

if ($('#menu-item-49').hasClass('current-menu-item') || 
    $('#menu-item-49').hasClass('current-menu-parent')) {
  $('ul.sub-menu ').css('display', 'block');
}
69
ответ дан 27 November 2019 в 21:53
поделиться

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

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

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

1
ответ дан 27 November 2019 в 21:53
поделиться

Итак, близко!

Попробуйте:

if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ) {
  $('ul.sub-menu ').css('display', 'block'); 
}
0
ответ дан 27 November 2019 в 21:53
поделиться

Ниже приведено то, что вы задумали:

var menuItem49 = $('#menu-item-49');
if (menuItem49.hasClass('current-menu-item') || menuItem49.hasClass('current-menu-parent')) {
    // ...
}
0
ответ дан 27 November 2019 в 21:53
поделиться

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

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

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

0
ответ дан 27 November 2019 в 21:53
поделиться
if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ) {
  $('ul.sub-menu ').css('display', 'block');
}

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

1
ответ дан 27 November 2019 в 21:53
поделиться

Вы не можете использовать оператор || (или) в 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');
}
2
ответ дан 27 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

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