jQuery determine if ul has class OR another one

前端 未结 7 2266
野趣味
野趣味 2020-12-09 07:56

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(\'curren         


        
相关标签:
7条回答
  • 2020-12-09 08:21

    The following is what you've in mind:

    var menuItem49 = $('#menu-item-49');
    if (menuItem49.hasClass('current-menu-item') || menuItem49.hasClass('current-menu-parent')) {
        // ...
    }
    
    0 讨论(0)
  • 2020-12-09 08:22
    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?

    0 讨论(0)
  • 2020-12-09 08:29

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

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

    More attribute selectors like ^= may be found here.

    0 讨论(0)
  • 2020-12-09 08:34

    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

    0 讨论(0)
  • 2020-12-09 08:36

    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');
    }
    
    0 讨论(0)
  • 2020-12-09 08:40

    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');
    }
    
    0 讨论(0)
提交回复
热议问题