Вопрос

Очень просто положить: линия currentItem.toggleClass('open'); Похоже, не работает.

Точнее, при проверке результатов с Firebug, я вижу класс «Открытый» мигающий (появляющийся и сразу исчезающий) на соответствующем элементе. Так что это как функция на самом деле запускается дважды (конечно, я щелкнул только один раз).

Может кто-нибудь объяснить мне, почему это и как это предотвратить?

Вот мой код 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');
});

И вот часть моего HTML-кода, слегка упрощенного для лучшей читабельности (не очень красивая, но я знаю только ограниченное управление на выходе 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>

Заранее спасибо.

Это было полезно?

Решение

Решается проблема: файл JS был фактически включен дважды в HTML-головке, что привело к запускам функции дважды с каждым кликом.

Другие советы

У меня была похожая проблема на моем сайте, и я обнаружил, что я случайно дублировал крючок TOGGLECLASS внизу, когда сначала возился с ним. Упс! Обязательно посмотрите на двойные звонки!

У меня была похожая проблема, делающая это:

HTML:

<a>JS-link</a>

JS:

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

Результаты на кликам зарегистрируйтесь дважды!

У меня была такая же проблема, и поняла, что я случайно связал функцию дважды. Я изначально хотел переместить код из одного файла JavaScript в другой, но случайно оставил оригинал на своем месте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top