web-dev-qa-db-fra.com

Si hasClass, puis addClass au parent

Message original: Pourquoi ce script simple ne fonctionne-t-il pas?

if ($('#navigation > ul > li > ul > li > a').hasClass('.active')) {
    $(this).parent().parent().parent().addClass(".active");
}

MODIFIER:

Cela ne cachera pas le H1:

if ($('#content h1').hasClass('aktiv')) {
    $(this).hide();
}

Seulement ceci:

if ($('#content h1').hasClass('aktiv')) {
    $('#content h1').hide();
}

Pourquoi ne puis-je pas utiliser le (ceci)? 

6
curly_brackets

Le point ne fait pas partie du nom de la classe. Il n'est utilisé que dans la notation de sélecteur CSS/jQuery. Essayez ceci à la place:

if ($('#navigation a').hasClass('active')) {
    $(this).parent().addClass('active');
}

Si $(this) fait référence à cette ancre, vous devez également la remplacer par $('#navigation a') car la condition if n'a pas de portée de rappel jQuery.

28
BoltClock

Sinon, vous pouvez utiliser:

if ($('#navigation a').is(".active")) {
    $(this).parent().addClass("active");
}
2
Marcus Whybrow

Vous ne pouvez pas utiliser $(this) car jQuery ne sait pas ce que c'est. Vous semblez trop compliquer les choses. Vous pouvez faire $('#content h1.aktiv').hide(). Il n'y a aucune raison de tester pour voir si la classe existe.

0
Bill Criswell

La raison pour laquelle cela ne fonctionne pas, c'est parce que this n'a pas de signification particulière dans une instruction if; vous devrez revenir à un niveau de portée où this est défini (une fonction).

Par exemple:

$('#element1').click(function() {
    console.log($(this).attr('id')); // logs "element1"

    if ($('#element2').hasClass('class')) {
        console.log($(this).attr('id')); // still logs "element1"
    }
});
0
Marcus Whybrow

Vous voulez probablement changer la condition en if ($(this).hasClass('active'))

De plus, hasClass et addClass prennent classnames , pas les sélecteurs.
Par conséquent, vous ne devriez pas inclure un ..

0
SLaks

Si quelqu'un utilise WordPress, vous pouvez utiliser quelque chose comme:

if (jQuery('.dropdown-menu li').hasClass('active')) {
    jQuery('.current-menu-parent').addClass('current-menu-item');
}
0
Edgar Quintero