非常简单地说:行currentItem.toggleClass('open');
似乎不起作用。
更准确地说,当用萤火虫检查结果时,我可以看到相关元素上的“打开”类闪烁(出现并立即消失)。所以就像这个函数实际上被触发了两次(当然我只点击一次)。
有人可以解释一下为什么会这样以及如何预防吗?
这是我的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>
提前致谢。
答案 0 :(得分:12)
问题解决了:JS文件实际上在HTML头中包含了两次,导致每次点击都会触发两次。
答案 1 :(得分:2)
我在我的网站上遇到了类似的问题,我发现当我第一次搞乱它时,我一直意外地复制了底部的toggleclass挂钩。哎呀!一定要找双重电话!
答案 2 :(得分:1)
我遇到了类似的问题:
<强> HTML:强>
<a>JS-link</a>
<强> JS:强>
$('a').click(function(event) {
... my stuff ...
# Forgot to do event.preventDefault(); !!
}
导致点击次数被注册两次!
答案 3 :(得分:1)
我有同样的问题,并意识到我不小心将该功能绑定了两次。我原本打算将代码从一个javascript文件移动到另一个javascript文件,但不小心将原始文件保留在原位。