Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   обработчик событий для динамически добавленных элементов (https://javascript.ru/forum/events/52288-obrabotchik-sobytijj-dlya-dinamicheski-dobavlennykh-ehlementov.html)

рони 11.12.2014 20:29

Tecvid,
проверяйте ...
если класс один то можно так
if (target.className == 'modify')

Tecvid 11.12.2014 20:39

рони,
я не про способ проверки, но не важно) разобрался) спасибо большое, всё теперь работает ка надо :)

andrey3681 16.07.2016 11:35

Помогите плиз с помощью ajax добавляю ссылку на открытие модального окна:
//Модальное окно ДОБАВИТЬ
$(document).ready(function() { // запускаем скрипт после загрузки всех элементов
    /* засунем сразу все элементы в переменные, чтобы скрипту не приходилось их каждый раз искать при кликах */
    var overlay = $('#overlay'); // подложка, должна быть одна на странице
    var open_modal = $('.open_add'); // все ссылки, которые будут открывать окна
    var close = $('.modal_close, #overlay'); // все, что закрывает модальное окно, т.е. крестик и оверлэй-подложка
    var modal = $('.modal_add'); // все скрытые модальные окна

     open_modal.click( function(event){ // ловим клик по ссылке с классом open_modal
         event.preventDefault(); // вырубаем стандартное поведение
         var div = $(this).attr('href'); // возьмем строку с селектором у кликнутой ссылки
         overlay.fadeIn(400, //показываем оверлэй
             function(){ // после окончания показывания оверлэя
                 $(div) // берем строку с селектором и делаем из нее jquery объект
                     .css('display', 'block') 
                     .animate({opacity: 1, top: '50%'}, 200); // плавно показываем
         });
     });

     close.click( function(){ // ловим клик по крестику или оверлэю
            modal // все модальные окна
             .animate({opacity: 0, top: '45%'}, 200, // плавно прячем
                 function(){ // после этого
                     $(this).css('display', 'none');
                     overlay.fadeOut(400); // прячем подложку
                 }
             );
     });
});


Не открывается до обновления страницы

рони 16.07.2016 17:22

Цитата:

Сообщение от andrey3681
помощью ajax добавляю ссылку

добавили ссылку поставили клик на ссылку или поставили клик на body изначально

$('body').on('click' , '.open_add', function(event){ })

andrey3681 17.07.2016 11:18

Цитата:

Сообщение от рони
добавили ссылку поставили клик на ссылку или поставили клик на body изначально

Подскажите пожалуйста куда или вместо чего вставить приведенный код?
Так как в JavaScript только начинаю разбиратся:blink:

Дбавляю ссылку ajax:
function call() {
 	  var msg   = $('#Vhod').serialize();
        $.ajax({
          type: 'POST',
          url: 'logIn.php',
          data: msg,
		  
          success: function(data) {
			  var responseData = jQuery.parseJSON(data);
			switch(responseData.status){
                        case 'error':
							$('#logIn').html(responseData.message)
                        break;
                        case 'success':
							$('#logIn').html(responseData.message),
							$('#overlay').trigger('click'),
							$('#logInHeader').html(responseData.statusLogin);
                        break; 
                    }
          },
          error:  function(xhr, str){
	    alert('Возникла ошибка: ' + xhr.responseCode);
          }
        });
    };

рони 17.07.2016 11:33

andrey3681,
//Модальное окно ДОБАВИТЬ
$(function() { // запускаем скрипт после загрузки всех элементов
    /* засунем сразу все элементы в переменные, чтобы скрипту не приходилось их каждый раз искать при кликах */
    var overlay = $('#overlay'); // подложка, должна быть одна на странице
    $('body').on('click' , '.open_add', function(event){ // ловим клик по ссылке с классом open_modal
         event.preventDefault(); // вырубаем стандартное поведение
         var div = $(this).attr('href'); // возьмем строку с селектором у кликнутой ссылки
         overlay.fadeIn(400, //показываем оверлэй
             function(){ // после окончания показывания оверлэя
                 $(div) // берем строку с селектором и делаем из нее jquery объект
                     .css('display', 'block')
                     .animate({opacity: 1, top: '50%'}, 200); // плавно показываем
         });
     });

    $('body').on('click' , '.modal_close, #overlay', function(){ // ловим клик по крестику или оверлэю
            $('.modal_add') // все модальные окна
             .animate({opacity: 0, top: '45%'}, 200, // плавно прячем
                 function(){ // после этого
                     $(this).css('display', 'none');
                     overlay.fadeOut(400); // прячем подложку
                 }
             );
     });
});

andrey3681 17.07.2016 11:53

рони,
Все по прежнему, не работает:cray:

andrey3681 17.07.2016 11:58

рони,
Большущее спасибо! Разобрался, в ссылке изменил class на open_add, и все заработало!!!:dance: Все моя невнимательность:(

alecto 25.06.2018 11:48

Друзья, помогите пожалуйста разобраться, почему-то не снимается событие.
Проверил - условие выполняется.

var items = document.querySelector('.page-content');

var fnCounter = function (e) {
  var target = e.target;

  if (target.classList.contains('item-actions__cart')) {
    items.removeEventListener('click', fnCounter);
  }
};

items.addEventListener('click', {handleEvent: fnCounter, e: event});

Dilettante_Pro 25.06.2018 12:07

alecto,
А что такое items ?


Часовой пояс GMT +3, время: 17:31.