jQuery.data () работает в Mac OS WebKit, но не в iPhone OS? - PullRequest
1 голос
/ 24 декабря 2009

Я играю с jQTouch для приложения для iPhone OS, которое я играл и выключал некоторое время. Я хотел попробовать свои силы, создав его как веб-приложение, поэтому я начал играть с jQTouch. Для справки, вот страница + источник (весь мой код в настоящее время в index.html, так что вы можете просто «Просмотреть исходный код», чтобы увидеть все это):

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

По сути, я пытаюсь сохранить соответствующие объекты JSON, извлеченные из Google Local, в объекты DOM с помощью метода data () (в данном примере 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'). Все варианты возвращают undefined в версии WebKit для iPhone OS, но не на рабочем столе.

Интересно, что запуск этого на мобильном браузере Safari в iPhone Simulator также не удается .

Если вы посмотрите полный исходный код, вы увидите, что я даже пытаюсь сохранить этот объект в моем глобальном объекте jQTouch (названном jqt в моем коде). Это также не работает на мобильной платформе.

Кто-нибудь еще сталкивался с этим? Я признаю, что не являюсь программистом web / javascript по профессии, поэтому, если я делаю ошибку идиота, пожалуйста, сообщите мне об этом.

Заранее спасибо за помощь! -RPJ

Обновление: В первоначальном посте я не прояснил это, но я открыт для любого обходного пути, если он работает последовательно. Поскольку у меня возникают проблемы с хранением этих объектов в целом, все, что позволяет мне хранить их, пока достаточно. Спасибо!

Ответы [ 2 ]

2 голосов
/ 26 мая 2010

Вы пытались использовать атрибуты данных-ссылок HTML5? Данные должны быть строковыми, но вы можете просто сделать

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

и все еще имеет допустимую разметку HTML5.

1 голос
/ 24 декабря 2009

Насколько я могу судить, в Mobile Safari, похоже, есть ошибка при хранении таких объектов. Поэтому я просто сохранил компоненты объекта в хранилище данных документов.

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