Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   вызвать $(documet).ready() повторно (https://javascript.ru/forum/jquery/38314-vyzvat-%24-documet-ready-povtorno.html)

Logo 27.05.2013 20:17

вызвать $(documet).ready() повторно
 
Как в jQuery вызвать это событие повторно?

bes 27.05.2013 22:55

F5
PS: объясни цель этого вызова

Logo 28.05.2013 12:34

это не событие, никак, вы делаете что то неправильное

Т.е. api для этого не предусмотрено?
То что совсем то никак конечно загнули, можно переопределить ready(), даже не переписывая jQuery, а возможно хендлеры и так сохраняются где нибудь в объекте jQuery.

bes
После разработки сайта возникла задача сделать погрузку всех страниц ajax'ом, со сменой URL через window.history.pushState, что бы сохранить непрерывность проигрывания плеера. Пример можно посмотреть на vk.com.
В принципе по это дело есть плагин jquery-pjax.
Естественно, после обновления контента большинство скриптов сбиваются, новые не навешиваются.
Задача адаптировать существующий код под новую навигацию.

bes 28.05.2013 20:03

http://api.jquery.com/live/
в 1.8 ещё работает

UPD:
<script src="jquery-1.8.3.min.js"></script>
<button class="but">click</button>
<script>
jQuery(function ($) {
	$(".but").live('click', function () {
		console.log(new Date());
		$.ajax({
			type: 'POST',
			url: 'some.htm',
			success: function (data) {
				$('body').html(data);
				window.history.pushState('', '', 'some.htm');
			} 
		});
	});
} );
</script>


some.htm
<button class="but">some.htm click</button>

ilya.tk 29.05.2013 11:58

в замен live есть on, собственно onclick на все ссылки для pjax так и навешиваются. Но существующий код, и сторонние jquery плагины навешиваются обычным образом.
Пока сделал так, переопределил jQuery.fn.ready и setTimeout, при загрузке очищаю все jQuery события и таймауты и выполняю ready() заново.


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