jQuery determinar se ul tem class ou outro

Qual é o caminho certo para determinar se um object tem uma class ou outra? O seguinte é aparentemente errado ..

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

Obrigado!

Você poderia usar is vez disso?

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

Verifique o conjunto atual de elementos correspondentes em relação a um seletor e retorne true se pelo menos um desses elementos corresponder ao seletor.

É melhor usar várias consultas hasClass , que é a alternativa:

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

Você não pode usar o || (ou) operador dentro de hasClass . Tente isto:

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

Ou você pode fazer isso se for muito detalhado:

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

Ou melhor ainda:

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

Você já tentou o seguinte?

Você também pode usar .is() para verificar qualquer class que comece com current-menu- usando:

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

Mais seletores de atributos como ^= podem ser encontrados aqui .

O seguinte é o que você tem em mente:

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

Tão perto!

Experimentar:

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

Faça assim, separando em dois bits:

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

Espero que isso ajude você