Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Добавление обработчика событий при добавлении элементов (https://javascript.ru/forum/events/31542-dobavlenie-obrabotchika-sobytijj-pri-dobavlenii-ehlementov.html)

vladimircape 12.09.2012 02:15

Добавление обработчика событий при добавлении элементов
 
У меня ajax ом добавляются элементы и на них я добавляю обработчики событий необходимые.Но появилось проблема в одном обработчике
После появления элементов добавленных ajax добавляются события к ним,но к старым аналогичным элементам это событие перестает работать, или как-то не корректно, то в некоторых местах работает, то нет, хотя копировал копипастом.:cray:

bushstas 12.09.2012 08:20

Размести пожалуйста JS код. Так никто тебе ничем не поможет, нужно видеть как ты там добавляешь обработчики и как добавляются у тебя новые элементы.

можно ведь еще в самом HTML коде в файле PHP обработчике AJAX запроса вписывать у нужных элементов типа onclick="" и т.п.

vladimircape 12.09.2012 13:02

вот сам обработчик
$(".person .person-control p,.person .person-control p.meny").click(function(){		
		if($(this).attr("rel") != 'profil' && $(this).attr("rel") != 'close') {
			var $homeDiv = $(this).parent().parent().parent();		
			$homeDiv.addClass("active");
			if(!$homeDiv.is(".foto")) {
				if(!$(this).is(".active")) {
					$(".hidden-box").hide();
					$(".person").removeClass("active");
					$homeDiv.addClass("active");
					$(".person .person-control a").removeClass("active");
					$("div.v"+$(this).attr("rel"), $homeDiv).slideDown(100);			
					$(this).addClass("active");
				} else {						
					$("div.v"+$(this).attr("rel"), $homeDiv).hide();
					$(this).removeClass("active");
				}
			} else {
				if(!$(this).is(".active")) {
					$(".hidden-box").hide();
					$(".person").removeClass("active");
					$homeDiv.addClass("active");
					$(".person .person-control a").removeClass("active");
					$("div.v"+$(this).attr("rel"), $homeDiv).slideDown(100);			
					$(this).addClass("active");
				} else {	
					$homeDiv.removeClass("active");
					$("div.v"+$(this).attr("rel"), $homeDiv).hide();
					$(this).removeClass("active");
				}
			}
		}
		return true;//было false и поэтому по ссылкам не ходило
});

аналогичный код ,копипастом я вставил в ajax
в success.
Другие обработчики тоже вставленные нормально работают,а этот нет

vladimircape 13.09.2012 09:57

Странно что не работает, но пока решил через live(т.е. click заменил на live)и всё работает


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