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?