代码之家  ›  专栏  ›  技术社区  ›  rpj

jQuery。data()适用于Mac OS WebKit,但不适用于iPhone OS?

  •  1
  • rpj  · 技术社区  · 15 年前

    我正在用jQTouch玩一款iPhone操作系统应用程序,我已经时不时地玩了一段时间。我想试着把它做成一个网络应用,所以我开始玩jQTouch。作为参考,这里是页面+源代码(我所有的代码目前都在 index.html 所以你可以“查看源代码”来查看所有内容):

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

    本质上,我试图使用data()方法将从Google Local检索到的相关JSON对象保存到DOM对象中(在本例中, obj 是谷歌本地对象):

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

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

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

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

    然而,同样的代码返回 undefined 打电话给 $(this).data('selected') 在上面的第二段中。我也试过了 $('#' + e.target.id).data('selected') 甚至那些天真的人 $('#locPane').data('selected') .所有变体都返回 未定义 在iPhone OS版本的WebKit中,但不在桌面上。

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

    如果你查看完整的源代码,你会发现我甚至试图将这个对象保存到我的全局jQTouch对象(名为 jqt 在我的代码中)。这在移动平台上也是失败的。

    还有其他人遇到过吗?我承认我不是一名web/javascript程序员,所以如果我犯了一个愚蠢的错误,请给我打电话。

    提前感谢您的帮助! -RPJ

    更新: 我在最初的帖子中没有说得很清楚,但如果它一直有效,我愿意接受任何解决方案。由于我一般都很难存储这些对象,所以现在任何允许我保存它们的东西都已经足够好了。谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   joshwa    14 年前

    你试过使用HTML5数据引用属性吗?数据必须严格化,但你可以这样做

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

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

        2
  •  1
  •   P.Turpie    15 年前

    据我所知,在移动Safari中存储这样的对象似乎有一个bug。所以我只是简单地将对象的组件存储在文档数据存储中。

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