jquery-mobile - почему плагин не срабатывает, если страница запуска активирована извне? - PullRequest
1 голос
/ 22 ноября 2011

Мне нужна помощь:

  • У меня есть три отдельные страницы JQM - page1.html, page2.html и page3.html.
  • Я добавляю свои файлы .js на все страницы, поэтому, какая бы страница ни была загружена первой, также загружается плагин
  • page2.html имеет триггер под названием data-somesome = "true" для запуска плагина на странице2
  • Я добавил прослушиватель, который ожидает создания страницы триггера

выглядит так:

(function($,window){
   $.widget("mobile.somesome",$.mobile.widget, {
      _create: function() { 
          var self = this;
          console.log("here we go");
          ...
          }
   });
   // initialize
   var trigger = $('div:jqmData(somesome="true")').live( 'pagecreate',function(event){ 
   if ($('html').data('somesome-init', 'Off')) {
        $('html').data('somesome-init', 'On')
        console.log("trigger fired");
        trigger.somesome();
        }
    });
}) (jQuery,this);

Проблема:
Если я загружаю page2.html напрямую, все работает как обычно = консольные журналы запускают триггер и плагин запускается.

Однако, если я начну с page1.html или page3.html, а затем вызову page2.html, надеясь, что плагин сработает, я получу только консольный «триггер», так что я обнаружил правильный, но сам плагин не работает

Кто-нибудь может дать мне подсказку?

EDIT Добавлено несколько примеров:
- page2 direct загрузить его напрямую, и цвет изменится на красный
- через страницу 1 начните отсюда, затем перейдите на страницу 2, ничего не происходит
- через страницу 3 или начать отсюда и перейти на страницу 2, также ничего не происходит

1 Ответ

0 голосов
/ 22 ноября 2011

$ (this) заставляет это работать ... вот так:

var trigger = $('div:jqmData(somesome="true")').live( 'pagecreate',function(event){ 
    if ($('html').data('some-init', 'Off')) {
        $('html').data('some-init', 'On')
            $( this ).somesome();
            }
     });
...