jQuery determine if ul has class OR another one jQuery determine if ul has class OR another one jquery jquery

jQuery determine if ul has class OR another one


You could use is instead?

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

Check the current matched set of elements against a selector and return true if at least one of these elements matches the selector.

Beats having to use multiple hasClass queries, which is the alternative:

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


You cannot use the || (or) operator within hasClass. Try this:

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

Or you can do this if that's too verbose:

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

Or even better:

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');}

Have you tried the following?