frendlix
@frendlix
Event-destroy

Почему Jquery toggle не работает после ajax?

Ребят привет
Есть вот такой jquery

Обычный тоггл класса
В трёх вариациях

$(document).on('click', '#play', function() {
                    if ($(this).hasClass('fa-play')) {
                        $('#play').removeClass('fa-play');
                        $('#play').addClass('fa-pause');
                        audio.play();
                    } else if($(this).hasClass ('fa-pause')) {
                        $('#play').removeClass('fa-pause');
                        $('#play').addClass('fa-play');
                        audio.pause();
                    } else {

                    }
                });

$('#play1').click(function() {
                    if ($(this).hasClass('fa-play')) {
                        $('#play1').removeClass('fa-play').addClass('fa-pause');
                        audio1.play();
                    } else {
                        $('#play1').removeClass('fa-pause').addClass('fa-play');
                        audio1.pause();
                    }
                    $(this).addClass("fa-pause");  
                });

$("#play1").click(changeClass);
                function changeClass() {
                   $("#play1").toggleClass("fa-play fa-pause");
                   if ($(this).hasClass('fa-play')) {
                       audio1.pause();
                    } else {
                        audio1.play();
                    }
                };


Вот его html

<div class="controlvoice">
<i class="fa fa-play" id="play1"></i>
</div>


Но при запуске popup окна на ajax вот из этого скрипта:
https://github.com/dimsemenov/Magnific-Popup

Да и из других (пробовал несколько)
Перестаёт переключаться/добавляться класс.

Что делать?
Как быть?
Спасити!
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
Liatano
@Liatano
На кнопку навешано 3 обработчика,причем в первом случае есть делегирование - обработчик вешается на страницу и ужа в ней проверяется,не кнопка ли это.В случае аякса кнопка наверняка пересоздается,что убивает вторые 2 обработчика. Нужно везде сделать делегирование,как в первом случае.
Или я не поняла задачу?
Ответ написан
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
1) замените айди на класс, так как с айдишниками при создании и удалении элементов у вас будет лажа с дублями айди.
2) $(document).on('click', '.play', function() {... должно работать нормально.

3) в коде переключения перезаморочено с ифами
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы