Domanda

Molto semplicemente mettere:. La linea currentItem.toggleClass('open'); non sembra al lavoro

Più precisamente, quando si ispeziona i risultati con Firebug, posso vedere la classe "open" lampeggiante (apparendo e scomparendo subito) sull'elemento in questione. Quindi è come se la funzione è effettivamente attivato due volte (ovviamente ho solo clic una volta).

Qualcuno può spiegare a me perché questo è e come prevenirlo?

Ecco il mio codice 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');
});

E qui è una parte del mio codice HTML, leggermente semplificata per una migliore leggibilità (non molto bella lo so, ma ho solo un controllo limitato sul output 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>

Grazie in anticipo.

È stato utile?

Soluzione

Problema risolto: il file JS è stato effettivamente incluso due volte alla testa HTML, che ha causato la funzione per essere attivato due volte con ogni clic

.

Altri suggerimenti

Ho avuto un problema simile sul mio sito, e ho scoperto che avevo accidentalmente duplicato il toggleclass agganciare fino in fondo in fondo, quando prima di fare in giro con esso. Oops! Assicurati di cercare doppie chiamate!

Ho avuto un problema simile a fare questo:

html:

<a>JS-link</a>

js:

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

Risultati di click essere registrati due volte!

Ho avuto lo stesso problema e mi resi conto che avevo accidentalmente legato la funzione due volte. Avevo inizialmente lo scopo di spostare il codice da un file javascript per un altro, ma accidentalmente lasciato l'originale al suo posto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top