Frage

Sehr einfach ausgedrückt:. Die Linie currentItem.toggleClass('open'); nicht zu funktionieren scheint

Genauer gesagt, wenn die Ergebnisse mit Firebug Inspektion, kann ich die Klasse „offen“ sehen zu blinken (erscheinen und sofort verschwinden) an dem betreffenden Elemente. So ist es, wie die Funktion tatsächlich zweimal ausgelöst wird (natürlich habe ich nur einmal klicken).

Kann jemand mir erklären, warum das so ist und wie man es verhindern?

Hier ist mein jQuery-Code:

$('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');
});

Und hier ein Teil meines HTML-Code ist, etwas für eine bessere Lesbarkeit vereinfachte (nicht sehr hübsch ich weiß, aber ich habe nur eine begrenzte Kontrolle über die HTML-Ausgabe):

<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>

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Problem gelöst: die JS-Datei tatsächlich wurde im HTML-Kopf enthält zweimal, die die Funktion verursachten bei jedem Klick ausgelöst zweimal wird

.

Andere Tipps

Ich hatte ein ähnliches Problem auf meiner Seite, und ich fand, dass ich die versehentlichen dupliziert hatte am Ende der ganzen Weg toggleclass Haken, wenn sie zuerst mit ihm herumspielen. Hoppla! Achten Sie darauf, für Doppel Anrufe suchen!

Ich hatte ein ähnliches Problem dies zu tun:

html:

<a>JS-link</a>

js:

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

Ergebnisse in Klicks sein Register zweimal!

Ich hatte das gleiche Problem und realisiert hatte ich versehentlich die Funktion zweimal gebunden. Ich hatte ursprünglich dazu gedacht, den Code von einer Javascript-Datei zu einem anderen zu bewegen, aber versehentlich das Original an seinem Platz belassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top