jquery toggleclass не работает?
-
28-09-2019 - |
Вопрос
Очень просто положить: линия 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 в другой, но случайно оставил оригинал на своем месте.