Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   проблема с ajax-календарём. переходит по сылке со второго клика хоть тресни (( (https://javascript.ru/forum/jquery/45759-problema-s-ajax-kalendarjom-perekhodit-po-sylke-so-vtorogo-klika-khot-tresni.html)

Ledd 15.03.2014 06:48

проблема с ajax-календарём. переходит по сылке со второго клика хоть тресни ((
 
Народ, помогите. уже ночь сижу с этим ((
в календаре переход по месяцам сделал с помощью аджакса. при клике по ссылке забирается в переменную значение атрибута href, после чего его данные (а там год и месяц) отправляются аджакс-запросом на сервак и при возврате календарь обновляется. т.е. обновляется и сама ссылка. при втором клике на эту ссылку она блин работает как ссылка, т.е. переходит. реально посмотреть календарь так, чтоб не перегружалась страница можно только на один мес. вперёд и на один назад.
вот код:
$('a#nextmonth').click(function(event)
		{
			var address = $("#nextmonth").attr('href');
			var link = 'http://сайт/контроллер/функция/' + address; // в address находится дата в формате гггг/мм (переменные для работы функции на серваке)
			
			$.ajax(
            {
                url: link,
                success: function(data)
                {
		$('#calendar').html(data);
                }
            });
			event.preventDefault();
			return false;
		}
	);

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

danik.js 15.03.2014 08:09

Цитата:

Сообщение от Ledd
я так понимаю он айдишник прежний как объект в себе хранит и новый такой же айдишник, заново пришедший с сервака не принимает к действию

Ну образно да. Только не "айдишник", а элемент. Ты навесил обработчик события на элемент. Затем ты затер этот элемент, а на его месте создался новый, на котором нет никаких обработчиков событий.

В идеале все должно работать без всякой подгрузки с сервера (блин, ну что такого в календаре, что его нельзя сделать чисто на js? Тем более реализаций готовых куча). А подгружать только массив с днями, имеющими посты.

Но как быстый фикс используй делегирование событий:
$('#calendar').on('click', 'a#nextmonth', function(event) {..})

Ledd 15.03.2014 16:03

Спасибо огромное. помогло.
и спасибо за объяснение про элемент. прямо чувствую, как ума прибавилось. а то одни догадки были ))


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