jQuery 确定 ul 是否有类或另一个类

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3196613/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 15:00:07  来源:igfitidea点击:

jQuery determine if ul has class OR another one

jqueryif-statement

提问by nwindham

what is the right way to determine if an object has one class OR another one? The following is appearantly wrong..

确定一个对象是有一个类还是另一个类的正确方法是什么?以下似乎是错误的..

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

Thanks!

谢谢!

回答by djdd87

You could use isinstead?

你可以用is吗?

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.

根据选择器检查当前匹配的一组元素,如果这些元素中至少有一个与选择器匹配,则返回 true。

Beats having to use multiple hasClassqueries, which is the alternative:

Beats 不得不使用多个hasClass查询,这是替代方案:

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

回答by Vivin Paliath

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

您不能在 中使用||(or) 运算符hasClass。尝试这个:

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

回答by Trefex

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?

您是否尝试过以下方法?

回答by jasongetsdown

You can also use .is()to check for any class beginning with current-menu-by using:

您还可以使用以下.is()方法检查以开头的任何类current-menu-

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

More attribute selectors like ^=may be found here.

更多的属性选择器^=可以在这里找到。

回答by Marcos Placona

Do it like this instead, separating it in two bits:

改为这样做,将其分成两部分:

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

Hope this helps you

希望这对你有帮助

回答by BalusC

The following is what you've in mind:

以下是您的想法:

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

回答by HurnsMobile

So close!

很近!

Try:

尝试:

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