非常简单:线 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文件移至另一个JavaScript文件,但不小心将原件放在其位置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top