Проблема с jquery .load () в Internet Explorer - отлично работает в других браузерах - PullRequest
2 голосов
/ 11 января 2012

У меня возникли проблемы с некоторыми jQuery в IE. в консоли не отображаются ошибки, поэтому отладку очень сложно.

Я расскажу вам, как работает скрипт

Index.php

[article.php загружается в этот div с помощью PHP include () в первый раз]

Так что внутри article.php у меня есть кнопка для обновления: image

и у меня также есть следующий код в верхней части article.php:

<script type='text/javascript'>
$(document).ready(function()
{

/*-------------------------------------------------------------------------------*/
//                           REFRESH BUTTON 
    $('#fresh').click(function() {
        $('#loadergif').show(); //show loader gif until load complete
        $("#tableholder").load('article.php?site=whatever','');
        $('#loadergif').hide(); //hide loader gif when load is complete
    });
/*-------------------------------------------------------------------------------*/
});
</script>

Поэтому, когда я нажимаю на кнопку обновления (изображение), он перезагружает div держателя таблицы - и это прекрасно работает в Google Chrome, Safari, Firefox - но в IE8 это работает только один раз. после этого, как будто jQuery в состоянии покоя. Я попытался снова добавить jQuery в article.php, но это тоже не помогает.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 11 января 2012

попробуйте изменить click() с live() и переместить этот скрипт в ваш index.php

Возможно, IE8 в некоторых случаях не запускает событие DOMready (внутри article.php), когда вы загружаете контент через ajax, чтобы ваша функция не выполнялась

Для этого необходим метод live(), поскольку, если кнопка находится внутри статьи, метод click() будет связывать функцию только один раз при первом событии DOMready.

Когда страница загружается через ajax, вы изменяете элемент #fresh, так что вы теряете предыдущую ссылку на этот элемент. live() позволит вам всегда привязывать событие к элементу $('#fresh'), даже если оно позже будет повторно внедрено в документ

1 голос
/ 11 января 2012

Вы можете использовать .post() вместо .load().Как я видел, .load() работал для меня в Internet Explorer 8, хотя.Также вы можете проверить версию jquery один раз, если она обновлена.

Убедитесь, что .click() работает правильно.Можете ли вы сказать ошибку, выданную браузером?

...