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

问题描述:

我正在玩jQTouch的iPhone OS应用程序,我一直玩弄了一段时间。我想尝试将它作为一个Web应用程序来构建,所以我开始使用jQTouch。作为参考,在这里是页面+源(所有我的代码是目前index.html所以你可以“查看源文件”看到这一切):jQuery.data()适用于Mac OS WebKit,但不适用于iPhone OS?

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

本质上讲,我试图挽救有关JSON从谷歌本地检索到使用数据()方法DOM对象的对象(在此实例中,obj是谷歌本地对象):

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

然后以后(在不同的“窗格”),检索该对象是used:

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

在桌面操作系统(雪豹在我的情况下)Chromium和Safari,这完美(尝试它)。

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

有趣的是,在iPhone模拟器的移动Safari上运行此操作也不如

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

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

非常感谢您的帮助! -RPJ

更新:我没能在原岗位明确,但我愿意接受任何解决办法,如果它的工作原理一致。由于我在整体上存储这些对象时遇到问题,因此现在可以让我保留它们的任何东西都足够了。谢谢!

据我所知,移动Safari存储这样的对象似乎存在一个错误。所以我所做的只是将对象的组件存储在文档数据存储中。

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

不幸的是,我没有这种方法的运气。我尝试将原始数据对象(例如字符串)存储在$(document)数据存储区中,但仍然以检索时未定义的值结束。 – rpj 2009-12-24 02:26:00

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

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

仍然有有效的HTML5标记。