Я объяснил проблему ниже этого кода
<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>
Существует часть содержания в отделении, которое имеет 'содержание' как его идентификатор В этом, у меня есть отделение справки. Который является display:none bydefault и если пользователь нажимает кнопку справки, я делаю a
$('#help').show(500);
и когда пользователь нажимает ту же кнопку справки или если пользователь нажимает в отделении справки затем, я делаю этот код для сокрытия того $ отделения ('#help') .hide (500)
Это работает хорошо, пока я не делаю запрос ajax для обновления содержания идентификатора отделения ='content', я перезаписываю то же отделение справки с тем же содержанием. это похоже, я перезаписываю всю предметную область кроме заголовка и нижнего колонтитула.
но после обновления его с текстом ответа не работает событие щелчка наверху кода, который является в document.ready, где, поскольку onclick работает над тем отделением
я имею в виду, работает хорошо. без этого по щелчку и с этим выше документа готовый код это не работает при перезаписи от ajax.
Из моего кода JavaScript опыта или ссылок не работает, когда код со сценарием src теги и теги script динамично выбирается и обновил использование ajax.
Теперь я использую onclick вместо того документа, готового скрыть и показать отделение справки.
и прежде всего
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); });
}
таким образом, кажется, что необходимо обновить все приложенные события при обновлении его с помощью ajax.
Поместите свои комментарии и предложения для преодоления этого.
попробуйте использовать .live ()
.
$(document).ready(function() {
$('#help').live('click', function () {
$(this).hide(500);
});
});
.live (eventType, handler)
с версии 1.9 .live () объявлен устаревшим.
Затем вы можете использовать http://api.jquery.com/delegate/
Присоединить обработчик к событию для всех элементы, соответствующие текущему селектор, сейчас или в будущем.
Попробуйте:
$('#help').live('click', function() {
// ...
});
вместо:
$('#help').click(function() {
// ...
});