2011-09-28 65 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文件是否有重複的代碼(如您所見)並將其刪除以解決您的問題。