Skrypt nie działą przy wpisaniu jednej linijki

0

Witam!
To mój pierwszy post. Sam sobie się dziwie, bo jak programuje od 3 lat to ZAWSZE znajdowałem odpowiedzi na swoje problemy w sieci. Teraz po kilkugodzinnym wertowaniu googla stwierdziłem że czas się zarejestrować:) Może to też dlatego że niecierpie jQuery.

Do rzeczy
Mam do zrobienia kalendarz na stronie, który pokazuje dany miesiąc plus przełączanie pomiędzy miesiącami. Przełączanie już zrobiłem i przy przeładowaniu strony wszytko pięknie się wyświetla. Więc wpadłem na pomysł, żeby zrobić to w Ajaxie.

I mam takie linijki kodu:

$(document).ready(function () {
	$('#prev').click(function(){
		prev();
	});
})

function prev(){
//		$("#inner-callendar").empty();
		$.ajax({
			url: "root/core/controllers/get_callendar_ajax.php?ver=1&action=prev", 
			type: "GET",
			success: function(html){
				
				$("#inner-callendar").append(html);
			}
		});
	}

i w sumie w takiej postaci skrypt się wykonuje poprawnie, tylko nowy miesiąc jest doklejany pod już istniejący na stronie. Jak się kliknie kilka razy to się doklei kilka miesięcy.
Jak odkomentuję
// $("#inner-callendar").empty();
to skrypt wykonuje się tylko raz. I nawet widze w firebugu że ponowne kliknięcia nie powodują wysłania zapytania. Co takiego jest w tej linijce że nie pozwala wykonać skryptu ponownie?

0

Zakładam, że #prev jest potomkiem #inner-callendar (calendar się pisze przez jedno l) - jeżeli usuniesz element z id="prev", a następnie go utworzysz - to niestety zdarzenia przypisane do tamtego przestaną być aktualne. Użyj jQuerowego live, albo po prostu po odświeżeniu kalendarza przypisuj eventy jeszcze raz. Stwórz sobie funkcję z eventami do kalendarza i wywołuj ją po document ready i po każdym pobraniu kalendarza.

Zamiast

$('#prev').click(function(){
  prev();
});

możesz użyć

$('#prev').click(prev);

a tu rozwiązanie z live (ale i tak poczytaj)

$('#prev').live('click',prev);
0

Poczytam jeszcze

Najłatwiej po prostu odnośnik z id="prev" było wyciągnąć poza diva z id="inner-callendar" i wszystko ruszyło

Poprawie też to jedno "L" a co tam

Dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1