【问题标题】:jQuery.data() works in Mac OS WebKit, but not on iPhone OS?jQuery.data() 适用于 Mac OS WebKit,但不适用于 iPhone OS?
【发布时间】:2009-12-24 00:24:37
【问题描述】:

我正在为一个 iPhone OS 应用程序使用 jQTouch,我已经断断续续地玩弄了一段时间。我想尝试将其构建为 Web 应用程序,因此我开始使用 jQTouch。作为参考,这里是页面+源代码(我所有的代码目前都在index.html,所以你可以“查看源代码”来查看全部):

http://rpj.me/doughapp.com/wd/

基本上,我正在尝试使用 data() 方法将从 Google Local 检索到的相关 JSON 对象保存到 DOM 对象中(在此示例中,obj 是 Google Local 对象):

$('#locPane').data('selected', obj);

然后稍后(在不同的“窗格”中),检索要使用的对象:

$('#locPane').bind('pageAnimationEnd', function(e, inf) {
            var selobj = $(this).data('selected');
            // use 'selobj' here ...
}

在桌面操作系统上的 Chromium 和 Safari 中(在我的例子中是雪豹),这非常有效(试试看)。

但是,对于上面第二个 sn-p 中对 $(this).data('selected') 的调用,相同的代码返回 undefined。我也试过$('#' + e.target.id).data('selected'),甚至是天真的$('#locPane').data('selected')。所有变体在 iPhone OS 版本的 WebKit 中都返回 undefined,但在桌面上不返回。

有趣的是,在 iPhone 模拟器的 Mobile Safari 上运行它也失败了

如果您查看完整源代码,您会发现我什至尝试将此对象保存到我的全局 jQTouch 对象(在我的代码中命名为 jqt)。这在移动平台上也失败了。

有没有其他人遇到过这种情况?我承认我不是一个网络/javascript程序员,所以如果我犯了白痴的错误,请告诉我。

提前感谢您的帮助! -RPJ

更新:我没有在原始帖子中明确说明,但如果它始终有效,我愿意接受任何解决方法。由于我通常无法存储这些对象,因此现在任何可以让我保留它们的东西都足够了。谢谢!

【问题讨论】:

    标签: javascript jquery webkit mobile-safari jqtouch


    【解决方案1】:

    您是否尝试过使用 HTML5 data-ref 属性?数据必须被字符串化,但你可以这样做

    $('#locPane').attr('data-selected', "somestring");
    

    并且仍然有有效的 HTML5 标记。

    【讨论】:

      【解决方案2】:

      据我所知,Mobile Safari 存储这样的对象似乎存在错误。所以我所做的只是简单地将对象的组件存储在文档数据存储中。

       $(document).data( "lessonCode" , lesson.lessonCode);
       $(document).data( "question" , lesson.question);
       $(document).data( "answer" , lesson.answer);
      

      【讨论】:

      • 不幸的是,我对这种方法也没有运气。我尝试在 $(document) 数据存储中存储原始数据对象(例如,只是字符串),但在检索时仍然得到未定义的值。
      猜你喜欢
      • 2017-05-07
      • 2017-08-02
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      相关资源
      最近更新 更多