wyjaśniłem problem poniżej tego kodujQuery kliknij zdarzenie nie działa, gdy treść jest nadpisane przy użyciu Ajax
<div id='content'>
<div id='help'>
blah blah blah
once there lived a king named midas
blah blah blah
</div>
<script>
$(document).ready(function() {
$('#help').click(function() {
$('help').hide(500);
})
})
</script>
<!-- bottom of the page after a long other content -->
</div>
<!-- end of div id= content -->
<script>
function ondelete()
{
// doing an ajax request to after deleting some items to dynamically update a list.
// the result will also have the same above div code with that help div
document.getElementById('content').innerHTML = xmlHTTP.responseText
}
</script>
Jest częścią zawartości wewnątrz div, która ma „treści” jako jego id Wewnątrz I pomoc div. Który jest display: none bydefault i jeśli użytkownik kliknie przycisk pomocy robię
$('#help').show(500);
i gdy użytkownik kliknie ten sam przycisk pomocy lub jeśli użytkownik kliknie wewnątrz pomocy div następnie zrobić ten kod, aby ukryć div $ ('# help'). hide (500)
Działa to dobrze, dopóki nie wykonam żądania ajax, aby zaktualizować zawartość div id = 'content' Nadpisuję ten sam div pomocy z tym samym zadowolony. to tak, jak nadpisuję cały obszar zawartości z wyjątkiem nagłówka i stopki.
ale po zaktualizowaniu go z tekstem odpowiedzi zdarzenie click w górnej części kodu, który jest wewnątrz document.ready nie działa jak onclick gdzie pracuje na tym dział
mi o to działa dobrze. bez tego po kliknięciu i tym kodem gotowym powyżej dokumentu nie działa po zastąpieniu z ajax.
Z mojego doświadczenia wynika, że kod lub łącza javascript nie działają, gdy kod ze znacznikami src skryptu i znacznikami skryptu jest dynamicznie pobierany i aktualizowany przy użyciu ajax.
Teraz używam onclick zamiast tego dokumentu gotowego do ukrycia i pokazania pomocy div.
a przede wszystkim
when there is a overwrite from ajax if you again set
$(#'help').click = .... code
this works.
like
function ondelete()
{
document.getElementById('content').innerHTML = xmlHTTP.responseText
$('#help').click (function() { $('#help').hide(500); });
}
więc wydaje się, że trzeba zaktualizować wszystkie załączone wydarzeń podczas aktualizowania go za pomocą AJAX.
Prosimy o zgłaszanie uwag i sugestii w celu rozwiązania tego problemu.
Voila pracuje Dziękuję –
Należy pamiętać, że żywe() jest przestarzała od JQuery 1.9, y.. Będziesz musiał przepisać live() na on() - JQuery nie zna już tej funkcji. Funkcja będzie wyglądała następująco: –
'$ (document) .on (" click "," #help ", function() {...});' –