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

时间:2009-12-24 00:24:37

标签: javascript jquery webkit mobile-safari jqtouch

我正在玩jQTouch for iPhone OS应用程序,我已经玩了一段时间。我想尝试将其构建为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(我的情况下是Snow Leopard)中,这非常有效(尝试一下)。

但是,相同的代码会返回undefined,以便在上面的第二个代码段中调用$(this).data('selected')。我也尝试了$('#' + e.target.id).data('selected')甚至是天真的$('#locPane').data('selected')。所有变体都在Web OSit的iPhone OS版本中返回undefined,但不在桌面上。

有趣的是,在iPhone模拟器中在Mobile Safari上运行此功能也会失败

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

有没有其他人碰到这个?我承认不是一个网络/ javascript程序员的交易,所以如果我犯了一个白痴的错误,请打电话给我。

提前感谢您的帮助! -RPJ

更新:我没有在原帖中说清楚,但如果一直有效,我会对任何解决方法持开放态度。由于我在存储这些物体时遇到了麻烦,所以任何可以让我保持这些物体的东西现在已经足够了。谢谢!

2 个答案:

答案 0 :(得分:2)

您是否尝试过使用HTML5 data-ref属性?数据必须按字母顺序排列,但您可以执行

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

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

答案 1 :(得分:1)

据我所知,Mobile Safari中存在一个存储此类对象的错误。所以我所做的只是将对象的组件存储在文档数据存储中。

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