jQuery.data() работает в Mac OS WebKit, но не в iPhone OS?

Я играю с 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, но не на рабочем столе.

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

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

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

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

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


person rpj    schedule 24.12.2009    source источник


Ответы (2)


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

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

и по-прежнему иметь действующую разметку HTML5.

person joshwa    schedule 26.05.2010

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

 $(document).data( "lessonCode" , lesson.lessonCode);
 $(document).data( "question" , lesson.question);
 $(document).data( "answer" , lesson.answer);
person P.Turpie    schedule 24.12.2009
comment
К сожалению, мне не повезло и с этим методом. Я попытался сохранить примитивные объекты данных (например, только строки) в хранилище данных $(document), но все равно получил неопределенные значения при извлечении. - person rpj; 24.12.2009