首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery模式在IE中不更新

jQuery模式在IE中不更新
EN

Stack Overflow用户
提问于 2010-07-17 02:35:56
回答 3查看 2.7K关注 0票数 2

我不能让以下代码在IE8中工作,它在火狐中工作得很好。

用户单击链接以将属性添加到他们的收藏夹列表。单击时,我使用jQuery将页面加载到模式中。如果他们再次点击相同的链接,代码需要重新运行,因此它将显示“已添加”。在IE中,它只显示原始的模式窗口,不会更新。

这是非常令人沮丧的。有人能帮我解决这个问题吗?

代码语言:javascript
运行
复制
$(document).ready(function() {
  var $loading = $('loading image goes here');

    $('.add_fav_property').each(function() {
        var $dialog = $('<div></div>')
            .append($loading.clone());
        var $link = $(this).bind('click', function() {

            $dialog
                .load($link.attr('href') )
                .dialog({
                    title: $link.attr('title'),
                    width: 400,
                    height: 150
                });

            $link.click(function() {
                $dialog.dialog('open');
                return false;   
            });             
            return false;
        });
    });
});

来自http://blog.nemikor.com/2009/08/07/creating-dialogs-on-demand/的jQuery代码

谢谢,克里斯。

EN

回答 3

Stack Overflow用户

发布于 2010-07-17 22:12:08

你有几个选择,这都是关于IE缓存结果的。您可以使用$.ajaxSetup()不缓存任何jquery AJAX请求,如下所示:

代码语言:javascript
运行
复制
$.ajaxSetup({ cache: false });

或者切换到.load()的完整$.ajax()版本,如下所示:

代码语言:javascript
运行
复制
$.ajax({
  cache: false,
  url: $link.attr('href'),
  dataType: 'html',
  success: function(data) {
    $dialog.html(data);
  }
});

这两个参数中的任何一个都会添加到查询字符串_=XXXXX中,其中XXXXX部分为Date().getTime();。这会阻止浏览器使用缓存的结果,因为它认为您正在请求一个新页面。

第三种选择是自己做,尽管它看起来像是复制或工作,如下所示:

代码语言:javascript
运行
复制
var href = $link.attr('href');
$dialog
  .load(href + (/\?/.test(href) ? "&" : "?") + "_=" + (new Date()).getTime())
  .dialog({
    title: $link.attr('title'),
    width: 400,
    height: 150
  });
票数 8
EN

Stack Overflow用户

发布于 2011-07-01 23:59:19

将空白数据对象(POST)传递给load函数会强制IE每次都加载内容。

代码语言:javascript
运行
复制
$('#div').load('http://url/whatever', {});
票数 2
EN

Stack Overflow用户

发布于 2010-07-17 05:36:25

我在IE和ajax加载时遇到了类似的问题。从根本上说,这是因为IE8喜欢缓存东西,拒绝显示更新的数据。将缓存函数更改为.ajax并指定“.load : false”。

http://api.jquery.com/jQuery.ajax/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3267858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档