【问题标题】:Firefox 5 - jQuery.data() - Only works on refreshFirefox 5 - jQuery.data() - 仅适用于刷新
【发布时间】:2011-07-28 18:36:55
【问题描述】:

jquery 的 .data() 方法似乎只在我进行刷新时才有效,而不是在我通过在 URL 位置栏中按 ENTER 键重新加载页面时才有效。

然而 div 在那里,我已经将它记录在 console.log -- 中,无论是刷新还是简单输入以从缓存加载页面..

有人见过这种行为吗?有什么问题?

$('div.special').each(function(index) {
    console.log($(this));
    //shows clearly that data-settings is set..
    if ($(this).data('settings')) {
        console.log('got settings');
    }
});


<div class="special" data-settings='{"dataUrl": "xxx", "layout": "list" }'></div>

编辑:我可以通过执行以下操作“解决”这个问题:

if ($(this).data('settings')) {
   var settings = $(this).data('settings');
} else if ($(this).attr('data-settings')) {
    eval('var settings = ' + $(this).attr('data-settings') + ';');
}

显然,div 或数据设置的构造方式没有任何问题,因为我可以通过 eval 访问 json 对象。

【问题讨论】:

  • 你能分享源码吗?
  • 抱歉,目前是本地开发项目。也不能只共享一个页面。
  • 为什么不能只发布div.data() 方法
  • 好吧,我可以发布,稍后更新。
  • 将代码复制到问题中可能只是一个错误,但是您使用单引号打开data-settings属性值,并使用双引号关闭它。

标签: jquery firefox custom-data-attribute


【解决方案1】:

如果没有看到你的消息,我不确定我能提供多少帮助!但这里有一个非常简单的例子来说明.data() 方法的工作原理(取自 jquery.com 上的例子)-> http://jsfiddle.net/yR3KG/

【讨论】:

  • 我也在 jsfiddle 上尝试过我自己的代码,它在 FF5 中也可以工作,但是 jsfiddle 的解释可能与普通页面不同,对吧? eval() 等?
  • 当你说它不起作用时——你是什么意思?我在 Chrome 和 FF 的控制台日志中得到“设置”...。
  • 当我在 URL 栏中按 ENTER 键再次加载页面时,没有收到消息“获取设置”。当我通过单击刷新按钮进行刷新时,我确实得到了它。
  • 我在原始消息中添加了一种“解决”这个问题的方法。奇怪的东西。
  • 这很奇怪!!!!也许在某处缓存?也许值得向 jquery 报告
猜你喜欢
  • 1970-01-01
  • 2017-04-12
  • 2013-04-11
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多