Mam niewielki problem z pętlą, którą zbudowałem. Po raz pierwszy próbowałem skonstruować pętlę za pomocą jQuery. To prosty przycisk czytaj więcej/mniej.pętla jQuery działa raz
Problem, który mam, jest dziwny. Kiedy strona ładuje się po raz pierwszy, działa idealnie, ale w dowolnym momencie uruchamia całą sprawę bez uwzględnienia zmiany w identyfikatorze.
HTML:
<div class="inner_container" id="tag_info"><?php?></div>
<a id="read_more">read more ></a>
jQuery:
$('a#read_more').click(function() {
$('#tag_info').stop().animate({
height: '100%'
}, 500);
$(this).text('< read less');
$(this).removeAttr('id');
$(this).attr('id', 'read_less');
$('a#read_less').click(function() {
$('#tag_info').stop().animate({
height: '50px'
}, 500);
$(this).text('read more >');
$(this).removeAttr('id');
$(this).attr('id', 'read_more');
});
});
CSS: [style kotwica nie konieczny]
#tag_info {
height: 50px;
overflow: hidden;
}
Co się dzieje (w dowolnym momencie po raz pierwszy) jest div będzie natychmiast animował do wysokości ustawionej w funkcji pierwszego kliknięcia, a następnie przeskoczy z powrotem do wysokości ustawionej za drugim kliknięciem funkcjonować.
Jeśli podzielę je na dwie różne funkcje kliknięcia, druga nie działa. Najbardziej mylące jest to, że działa raz, a następnie nie działa poprawnie. Jakieś sugestie?
Nigdy nie należy używać coś przed identyfikatorem dla selektorów jquery (IE: $ ('a # read_more') powinny być $ ('# read_more')) jest bardziej wydajny –
Co masz na myśli? Nie masz żadnych w przykładach. –
Zmiana identyfikatora po związaniu obsługi zdarzenia nie zmienia programu obsługi zdarzenia ani elementu, do którego jest przypisany. – adeneo