Каков наилучший метод для запуска JavaScript на странице в jQuery Mobile? - PullRequest
1 голос
/ 17 августа 2011

Я действительно изо всех сил пытаюсь разобраться в jQuery Mobile.Я понимаю, что DOM вставляется с содержимым каждой новой страницы, используя AJAX для целей кэширования.Тем не менее, обычно моя разработка состоит из использования JavaScript в событии jQuery ready.

В качестве простого примера у меня есть страница с указанием адреса и карта местоположения в Google.Указатель на карте устанавливается с помощью JavaScript.

Когда карта отображается, адрес отображается правильно (извлечено из контроллера MVC), но затем я хочу запустить фрагмент JavaScript, чтобы поместить почтовый индекс наmap.

Теперь это довольно простые вещи, но, похоже, мне нужно прыгать через обручи, чтобы это заработало.Я видел примеры привязки к событиям pagehow / pagecreate, но я хочу, чтобы мой скрипт запускался только на странице карты.События pagehow / create в конечном итоге запускаются на каждой странице, а не на том, что я хочу !!

Так что это действительно сводится к следующему:

  1. Запуск фрагмента JavaScript на КОНКРЕТНОЙ странице
  2. Динамический вызов некоторого JavaScript с почтовым индексом модели.

Как я могу это сделать?Я даже думал о том, чтобы попробовать Сенча прикоснуться, чтобы сказать, как он справляется с этим.

Ответы [ 2 ]

0 голосов
/ 26 августа 2011

Я думаю, что у меня есть ответ, который я получил после. Хотя rel = "external" AFAIK вызывает загрузку страницы без AJAX и, следовательно, запускает любой сценарий в разделе head, это пропускается в последующих запросах. После первого запроса AJAX, сделанного jQM, содержимое страницы извлекается из ее внутреннего кэша без запуска какого-либо сценария. Я думаю, что сайт jQM добавил страницу, которая описывает это поведение:

http://jquerymobile.com/demos/1.0b2/#/demos/1.0b2/docs/pages/page-scripting.html

Как уже упоминал Фил, живое событие можно использовать в JavaScript главной страницы запуска. Просто убедитесь, что div с идентификатором data-role = "page" соответствует тому, с чем вы связываете событие pagecreate с:

$('#aboutPage').live('pagecreate',function(event){
  alert('This page was just enhanced by jQuery Mobile!');
});
0 голосов
/ 22 августа 2011

Лучше всего использовать разные страницы, а не встраивать все страницы в один документ. Также вы можете использовать rel = "external" на каждой странице вашего сайта, чтобы Ajax НЕ использовался. Таким образом, вы можете встраивать элементы jQuery по мере необходимости, а не загружать их все сразу.

...