JQuery определить, есть ли UL класс или другой - PullRequest
30 голосов
/ 07 июля 2010

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

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

Спасибо! * * 1004

Ответы [ 7 ]

68 голосов
/ 07 июля 2010

Вместо этого можно использовать 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 голосов
/ 07 июля 2010

Вы не можете использовать оператор || (или) в 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');
}
1 голос
/ 08 июля 2010

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

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

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

1 голос
/ 07 июля 2010
if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ) {
  $('ul.sub-menu ').css('display', 'block');
}

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

0 голосов
/ 07 июля 2010

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

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

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

0 голосов
/ 07 июля 2010

Так близко!

Попробуйте:

if ($('#menu-item-49').hasClass('current-menu-item') || $('#menu-item-49').hasClass('current-menu-parent') ) {
  $('ul.sub-menu ').css('display', 'block'); 
}
0 голосов
/ 07 июля 2010

Вот что вы имеете в виду:

var menuItem49 = $('#menu-item-49');
if (menuItem49.hasClass('current-menu-item') || menuItem49.hasClass('current-menu-parent')) {
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...