2011-09-28 118 views
0

我有两个代码位,几乎相同的jQuery的切换切换自己回到其原始状态

<div class="favButtonHolder" alt="{% url inturl int.id %}"> 
     {% if int in user.get_profile.favorites.all %} 
      <div class="favorite favButton" style="display:none;">Favorite</div> 
      <div class="favorited favButton">Favorite</div> 
     {% else %} 
      <div class="favorite favButton">Favorite</div> 
      <div class="favorited favButton" style="display:none;">Favorite</div> 
     {% endif %} 
    </div> 

<div class="favButtonHolder" alt="{% url inturl result.object.id %}"> 
    {% if result.object in user.get_profile.favorites.all %} 
     <div class="favorite favButton" style="display:none;">Favorite</div> 
     <div class="favorited favButton">Favorite</div> 
    {% else %} 
     <div class="favorite favButton">Favorite</div> 
     <div class="favorited favButton" style="display:none;">Favorite</div> 
    {% endif %} 
</div> 

和一些配套的jQuery: $(文件)。就绪(函数(){

// Selecting Favorites 
    $('.favButtonHolder').click(function() { 
     var container = $(this); 

     $.get(container.attr('alt'), {'fav': 1}, function() { 
      container.find('.favButton').toggle(); 
     }); 

    }); 
}); 

由于某些原因,当我切换代码的​​第一位时,它的工作原理是f国家统计局。它隐藏适当的div并显示正确的div。

由于某些未知原因,当我切换第二位代码时,它会翻转几毫秒,然后翻转(隐藏变为块,然后几乎立即隐藏,反之亦然)。它正在执行GET,但不能正确切换。

为什么会发生这种情况?

+3

你有两次在你的JS文件的jQuery的位,或只是一次?如果你把它重复了,它会被调用两次,因此用'.toggle()'来取消它自己。 – Bojangles

+0

神圣的废话,我是多么愚蠢。我将它从第一个模板文件移出到JS文件中,并忘记将其移出第二个模板文件所在的失败代码所在的位置。谢谢,伟大的想法。 –

+0

很高兴我能帮上忙。我通过犯同样的错误发现了这个解决方案! – Bojangles

回答

1

制作一个答案我的评论


检查你的JavaScript文件,看看你复制你发布的代码。如果它出现在两个地方,当事件触发时,两个GET请求和两个.toggle()将被触发,相对于后者取消彼此。检查您的JS文件是否有重复的代码(如您所见)并将其删除以解决您的问题。