Data-transition и data-ajax вместе в Jqmobile

В моем коде Jqmobile я пытаюсь переходить страницы, применяя data-transition="slide" для якорных ссылок. Проблема в том, что связанные страницы имеют собственный jquery, закодированный мной... Когда я нажимаю якорь с помощью data-transition="slide" и href тогда он обязательно пройдет, но пользовательские скрипты jquery на связанной странице не запускаются... Я пытался использовать data-ajax-"false", но в этом случае пользовательский скрипт запускается, но не data-transition="slide"... Я хочу, чтобы оба запускались вместе... Возможно ли... ??

Вот простой обычай, в котором я показываю/скрываю поля ввода.

<script type="text/javascript">
$(document).bind("pageinit", function(){
      $('#near_index').hide();
      $('#find').click(function() {
             $('#near_index').show();       
      });
    });
</script>

Вот HTML,

<a href="category.html" data-transition="slide" data-ajax-"false"><img src="images/23-bird.png" alt="Category 2" class="ui-li-icon iconSmall">Category 2</a>

person SaurabhLP    schedule 08.06.2012    source источник


Ответы (1)


pageinit предназначен для инициализации подключаемого модуля — см. здесь.

Таким образом, это событие сработает только один раз при первой загрузке JQM. После инициализации вашей "страницы" (DOM). Любые другие загруженные вами страницы будут перенесены в DOM, но не вызовут другой pageinit.

Просто используйте любое из других доступных событий (ссылка выше), например pagebeforeshow или pageshow. Они будут срабатывать при каждой загрузке страницы в DOM. Просто поместите console.log("HELLO") в обработчик событий и посмотрите, срабатывает ли он.

РЕДАКТИРОВАТЬ Переходы:
Вы не можете установить data-ajax="false" и иметь переход (слайд со страницы A на страницу B), потому что переход является результатом использования AJAX для загрузки нового страница В DOM по сравнению с обычной ссылкой (data-ajax="false"), удаляющей старую DOM и загружающей новую страницу (новую DOM).

Концепция JQM заключается в том, чтобы всегда оставаться на ТОЙ ЖЕ «Странице» и просто загружать/выгружать новые страницы через Ajax. Вот как вы можете делать переходы (загрузить новую страницу, расположить ее рядом со старой и затем скользить).

Это также может быть причиной того, что ваш пользовательский код не срабатывает, потому что, если вы скажете data-ajax="false", вы скажете JQM "Я здесь закончил" и загрузите новую страницу.

Если вам не нужен data-ajax="false", оставьте его.

person frequent    schedule 08.06.2012
comment
бесполезно, я применил как pagebeforeshow, так и pageshow, console.log(HELLO) не срабатывает... переход не происходит.. - person SaurabhLP; 08.06.2012
comment
Я думал, вы спрашивали об отсутствующем пользовательском скрытии/показе. Ваш эффект перехода = слайда не произойдет, если в вашей ссылке указано data-ajax=false. Смотрите мое редактирование - person frequent; 08.06.2012