Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   .append и немного гимороя. (https://javascript.ru/forum/jquery/50119-append-i-nemnogo-gimoroya.html)

AnshaHari 12.09.2014 18:44

.append и немного гимороя.
 
Собственно сама проблема :
При добавлении html кода с помощью метода .append , визуально он появляется (код), а в исходном коде его нет.
Как исправить или исправить подобное нельзя?

tsigel 12.09.2014 18:57

ну в иходном коде его и не должно быть :)
:D

tsigel 12.09.2014 18:57

он же исходный :)

tsigel 12.09.2014 18:58

В исходном коде отображается только то что пришло от сервера без каких-либо изменений на стороне клиента.

Aetae 12.09.2014 19:03

AnshaHari, актуальный html смотри в "инспекторе".)

AnshaHari 12.09.2014 19:29

Просто у меня как-то так. Если я динамически добавляю посты, для них не обрабатываются события подобного рода.

$(document).ready(function($){
...
	$('.post').click(function(event) {
		console.log('click')
		/* Act on the event */
		if (nowPlay) {
			document.getElementById(nowPlay +"music").pause();
		};
		console.log(nowPlay);
		nowPlay = $(this).attr("song");
		document.getElementById(nowPlay +"music").play();
	});
...
});

tsigel 12.09.2014 19:37

Есть 2 пути решения:
1) Либо заново добавлять обработчики на новые элементы
2) Слушать событие на родителе который не меняется и через event.target отслеживать изменения. Хотя так как вы пользуете jQuery - просто почитайте документацию метода "on", там есть решение вашей проблемы.

AnshaHari 12.09.2014 19:48

Цитата:

Сообщение от tsigel (Сообщение 330312)
Есть 2 пути решения:
Хотя так как вы пользуете jQuery - просто почитайте документацию метода "on", там есть решение вашей проблемы.

Результат такой же. Попробую от родителя
...
$('.post').on('click',function(event) {
		console.log('click')
		/* Act on the event */
		if (nowPlay) {
			document.getElementById(nowPlay +"music").pause();
		};
		console.log(nowPlay);
		nowPlay = $(this).attr("song");
		document.getElementById(nowPlay +"music").play();
	});
...

tsigel 12.09.2014 19:53

Цитата:

.on(events-map, [selector], [data])
:jQueryv:1.7
с помощью этого метода можно установить на выбранные элементы сразу несколько разных обработчиков событий, каждый из которых будет реагировать на свой тип события.

events-map — объект, в котором нужно перечислить типы обрабатываемых событий и соответствующие им обработчики. Задается в формате {events-1:handler-1, events-2:handler-2, ...}, где events-i и handler-i соответствуют параметрам events и handler в первом варианте метода (описанном выше).
selector — селектор по которому будут фильтроваться элементы, лежащие внутри уже найденных. В итоге, обработчик будет срабатывать только в том случае, если событие «поднялось» от одного из отфильтрованных
data — см. выше..
Цитата отсюда.

У вас должно быть примерно так:
$("StaticParentSelector").on("click", "dynamicChildSelector", handler);

Aetae 12.09.2014 19:54

Цитата:

Попробую от родителя
Где? Вы делаете то же самое.


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