Question

Très simplement:. currentItem.toggleClass('open'); la ligne ne semble pas au travail

Plus précisément, lors de l'inspection des résultats avec Firebug, je peux voir la classe « ouverte » clignotant (apparaissant et disparaissant immédiatement) sur l'élément concerné. Il est donc comme la fonction est effectivement déclenchée deux fois (bien sûr, je ne clique une fois).

Quelqu'un peut me expliquer pourquoi il en est et comment l'empêcher?

Voici mon code jQuery:

$('div.collapse ul.radio_list li input[type=radio]').click(function (event) {

    var currentTree = $(this).parent().parent().parent();
    var currentItem = $(this).parent().parent();
    var currentGroup = currentItem.attr('rel');

    $(this).parents('ul').children('li').removeClass('select');
    if ($(this).is(':checked')) {
        currentItem.addClass('select');
    }

    currentItem.toggleClass('open');

    var currentLevel = 0;
    if (currentItem.is('.level1')) {currentLevel = 1;}
    if (currentItem.is('.level2')) {currentLevel = 2;}
    if (currentItem.is('.level3')) {currentLevel = 3;}
    var nextLevel = currentLevel + 1;

    currentTree.children('li').filter('li[rel ^=' + currentGroup + '].level' + nextLevel).animate({'height': 'show', 'opacity': 'show'}, 250).addClass('currentChild');
});

Et voici une partie de mon code HTML, un peu simplifié pour une meilleure lisibilité (pas très joli, je sais, mais je ne dispose que d'un contrôle limité sur la sortie HTML):

<div class="col_left collapse">
    <ul class="radio_list" rel="7">
        <li class="onglet level0" rel="group1">
            <span class="onglet level0">
                <input type="radio" />
                    <label>Services Pratiques</label></span>
            <input type="hidden" value="1">
        </li>

Merci à l'avance.

Était-ce utile?

La solution

Problème résolu: le fichier JS a été effectivement inclus dans la tête HTML à deux reprises, ce qui a provoqué la fonction à être déclenché deux fois avec chaque clic

.

Autres conseils

J'ai eu un problème similaire sur mon site, et je trouve que j'avais accidentellement dupliqué le crochet toggleclass tout le chemin en bas, lors de la première déconner avec elle. Oops! Assurez-vous de rechercher des appels doubles!

J'ai eu un problème similaire faisant ceci:

html:

<a>JS-link</a>

js:

$('a').click(function(event) {
    ... my stuff ...
    # Forgot to do event.preventDefault(); !!
}

résultats en étant deux fois clics registre!

J'ai eu le même problème et réalisé que je l'avais accidentellement lié la fonction à deux reprises. J'avais initialement destiné à déplacer le code d'un fichier javascript à l'autre mais accidentellement laissé l'original à sa place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top