Internet Explorer中的jquery .load()问题 - 在其他浏览器中运行正常

时间:2012-01-11 13:54:04

标签: jquery ajax internet-explorer-8 refresh

我在IE中遇到一些jQuery的问题。没有错误出现在控制台中,因此调试起来非常困难。

我会告诉你脚本的工作原理

  

的index.php

     
    

< div id ='tableholder'> [article.php第一次被PHP include()加载到这个div中< / div>

  

所以在article.php中我有一个刷新按钮:     < img id ='fresh'src ='whatever.jpg'/>

我在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内部处于休眠状态。我已经尝试在article.php中再次添加jQuery,但这似乎也没有解决它。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

尝试使用click()更改live()并在index.php中移动该脚本

当您通过ajax加载内容时,某些内容中的IE8可能不会触发DOMready事件(在article.php内),因此您的函数未被执行

这样做,live()方法是必要的,因为如果按钮在文章中,click()方法将在第一个DOMready事件中仅绑定一次函数。

当通过ajax加载页面时,您更改了#fresh元素,因此您将丢失之前对该元素的引用。 live()将允许您始终将事件绑定到元素$('#fresh'),如果它稍后重新注入文档中

答案 1 :(得分:1)

您可以使用.post()代替.load()。正如我所见,.load()在Internet Explorer 8中为我工作。如果更新了,您还可以检查一次jquery版本。

确保.click()正常运行。你能说出浏览器抛出的错误吗?