Переключатель jQuery переключается обратно в исходное состояние

#django #jquery

#django #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:
$(document).готово (функция () {

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

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

    });
});
  

По какой-то причине, когда я включаю первый бит кода, он работает просто отлично. Он скрывает правильный div и отображает правильный div.

По какой-то неизвестной причине, когда я включаю второй бит кода, он переворачивается всего на несколько миллисекунд, а затем переворачивается обратно (скрытый становится блоком, а затем почти сразу скрытым, и наоборот). Он выполняет GET, но не переключается должным образом.

Почему это должно произойти?

Комментарии:

1. У вас есть этот бит jQuery в ваших JS-файлах дважды или только один раз? Если вы его дублируете, он будет вызываться дважды, следовательно, отменяя себя в терминах .toggle() .

2. Святое дерьмо, как глупо с моей стороны. Я переместил его из первого файла шаблона в файл JS и забыл удалить его там, где находится второй файл шаблона, в котором находится этот ошибочный код. Спасибо, отличная мысль.

3. Рад, что смог помочь. Я обнаружил это решение, совершив ту же ошибку!

Ответ №1:

Создание ответа из моего комментария


Проверьте свои файлы JavaScript, чтобы увидеть, дублировали ли вы опубликованный код. Если он присутствует в двух местах, при срабатывании .click() события будут запущены два запроса GET и два .toggle() s, которые отменяют друг друга по отношению к последнему. Проверьте свои JS-файлы на наличие дублирующегося кода (как у вас есть) и удалите его, чтобы устранить вашу проблему.