web-dev-qa-db-fra.com

jQuery détermine si ul a classe OR un autre

quelle est la bonne façon de déterminer si un objet a une classe OR une autre? Ce qui suit est apparemment faux.

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

Merci!

29
nwindham

Vous pouvez utiliser is à la place?

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

Vérifiez que le jeu de Correspondant actuellement correspond à un sélecteur et renvoyez True si au moins un de ces éléments Correspond au sélecteur.

Beats devant utiliser plusieurs requêtes hasClass, l'alternative:

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

Vous ne pouvez pas utiliser l'opérateur || (ou) dans hasClass. Essaye ça:

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

Ou vous pouvez le faire si c'est trop verbeux:

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

Ou même mieux:

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

Vous pouvez également utiliser .is() pour vérifier toute classe commençant par current-menu- en utilisant:

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

Plusieurs sélecteurs d'attributs comme ^= peuvent être trouvés ici .

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

Avez-vous essayé le suivant?

1
Trefex

Ce qui suit est ce que vous avez à l'esprit:

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

Si proche! 

Essayer:

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

Faites-le comme ceci à la place, en le séparant en deux bits:

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

J'espère que cela vous aide

0
Marcos Placona