2010-11-02 102 views
5

非常简单地说:行currentItem.toggleClass('open');似乎并没有工作。jQuery toggleClass不工作?

更准确地说,当用萤火虫检查结果时,我可以看到相关元素上的“打开”类闪烁(出现并立即消失)。所以就像这个函数实际上触发了两次(当然,我只点击一次)。

有人可以解释为什么这是,以及如何防止它?

这里是我的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> 

在此先感谢。

+1

你确定你不会以某种方式绑定这个函数两次吗? – NOtherDev 2010-11-02 11:22:14

+0

@A .:我不这么认为:这是我唯一一次在我的页面中使用“.click()”,也是唯一一次修改此类名称。我也尝试使用其他类名,但没有更好的结果。 – s427 2010-11-02 11:26:48

+0

@A .:其实你是对的!我正在使用一个我不太清楚的框架(Prado),而且我不知道JS文件已经被包含在HTML头两次。纠正这个问题解决了这个问题。谢谢! – s427 2010-11-02 11:39:23

回答

12

问题解决:JS文件实际上包含在HTML头两次,这导致每次点击触发两次函数。

+0

在我的头撞在键盘上一个小时后,你的评论为我做了...我包括它两次。 Ughhhhh – 2017-03-31 05:17:22

2

我在我的网站上有类似的问题,并且我发现我在意外地将底部的toggleclass钩子重复了一遍,当时首先搞乱了它。哎呀!确保寻找双重电话!

1

我有一个类似的问题,这样做:

HTML:

<a>JS-link</a> 

JS:

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

结果被点击两次注册!

1

我有同样的问题,并意识到我不小心将功能绑定两次。我原本打算将代码从一个JavaScript文件移动到另一个文件,但意外地将原文留在原位。