• Почему jQuery не выбирает по селектору после обновления класса?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Обработчики событий устанавливаются только на те элементы, которые были на странице в тот момент. В момент инициализации обработчиков на странице нет элемента с классом "class2" (он появится в неопределенном будущем, после клика по ".class1") - обработчик не установился.
    Для того, чтобы обрабатывать события на динамически добавляемых элементах, необходимо делегировать эту обработку какому-то неизменяемому родителю:
    $(document).on('click', '.class1', function() {
    	alert("click .class1");		
        $(this).removeClass("class1").addClass("class2");
    });
    
    $(document).on('click', '.class2', function() {
    	alert("click .class2");		
        $(this).removeClass("class2").addClass("class1");
    });


    А вообще, ваш код можно упростить:
    $(document).on('click', '.class1, .class2', function() {
        $(this).toggleClass("class1").toggleClass("class2");
    });
    Ответ написан
    2 комментария