Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.03.2014, 06:48
Новичок на форуме
Отправить личное сообщение для Ledd Посмотреть профиль Найти все сообщения от Ledd
 
Регистрация: 05.11.2011
Сообщений: 3

проблема с 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;
		}
	);

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

Последний раз редактировалось Ledd, 15.03.2014 в 06:51.
Ответить с цитированием
  #2 (permalink)  
Старый 15.03.2014, 08:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

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

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

Но как быстый фикс используй делегирование событий:
$('#calendar').on('click', 'a#nextmonth', function(event) {..})
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 15.03.2014, 16:03
Новичок на форуме
Отправить личное сообщение для Ledd Посмотреть профиль Найти все сообщения от Ledd
 
Регистрация: 05.11.2011
Сообщений: 3

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск