событие щелчка jQuery не работает, когда содержание перезаписывается с помощью 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>

Существует часть содержания в отделении, которое имеет 'содержание' как его идентификатор В этом, у меня есть отделение справки. Который является 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.

Поместите свои комментарии и предложения для преодоления этого.

7
задан Jayapal Chandran 28 July 2010 в 07:28
поделиться

2 ответа

попробуйте использовать .live () .

$(document).ready(function() {
    $('#help').live('click', function () {
          $(this).hide(500);
     });
});

.live (eventType, handler)

с версии 1.9 .live () объявлен устаревшим.

Затем вы можете использовать http://api.jquery.com/delegate/

Присоединить обработчик к событию для всех элементы, соответствующие текущему селектор, сейчас или в будущем.

5
ответ дан 7 December 2019 в 05:16
поделиться

Попробуйте:

$('#help').live('click', function() { 
    // ...
});

вместо:

$('#help').click(function() { 
    // ...
});
1
ответ дан 7 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: