2014-07-20 5 views
0

Я бы хотел прокрутить до определенного div по загрузке страницы. JQuery Mobile 1.4. Он отлично работает, если вы просто загружаете страницу, но не работает, если загружаете с помощью API.jQuery Mobile - события не запускаются при изменении pagecontainer

Загрузить с использованием API.

$('#schedule-a-call-collapsible').on("collapsibleexpand", function(event, ui){ 
     $("body").pagecontainer("change", 'schedule-a-call-mobile.html', {transition: 'slideup'}); 
} 

Свиток просто

Behave.prototype.doScrollTop = function(element) { 
    var pos = $(element).offset().top; 
    pos -= $('div.ui-header-fixed').outerHeight(); 
    $("html, body").animate({ "scrollTop": pos }, 500); 
}; 

Событие не уволят.

jQuery('body').on("pagecontainershow", function (e, ui) { 
    console.log("scrolling timezone"); 
    console.log(jQuery('#schedule-a-call-timezone').offset().top); 
    $('#schedule-a-call-timezone-col').collapsible('expand'); 
    behave.doScrollTop(jQuery('#schedule-a-call-timezone-col')); 
}); 

Обоснование заключается в том, что при расширении складного потока поток становится более сложным. Я хотел бы скрыть другие сворачиваемые параметры, если кто-то не прокручивает и не выполняет рабочий процесс, как если бы это был новый набор страниц.

Благодаря Джон

+0

Где вы размещаете код 'pagecontainshow'? – Omar

+0

Не имеет значения, помещаю ли я его в нижней части страницы data-role = или перед закрытым телом – Interlated

+0

Не думаю, что это возможно и просто установите location.href. В документе jqm говорится, что вы не можете загружать многостраничные html с помощью любых переходов - вот что это такое. Невозможно загрузить страницу загрузки ajax и потому что она загружается только один, она не запускает «pagecontainershow». – Interlated

ответ

0

Решение просто использовать location.href.

$('body').delegate('#collapsible-schedule-a-call', "collapsibleexpand", function (e, ui) { 
    e.preventDefault(); 
    document.location.href = 'schedule-a-call-mobile.html'; 
}); 

Слушавшее событие было изменено так, что оно полностью предотвратило событие pagecontainershow.

Основная причина - создать сайт, на котором есть мобильные переходы, которые отличаются от переходов на рабочем столе (слайд слева на мобильном устройстве и т. Д.). jquery mobile - это вызов, когда есть другие связанные с этим рамки.

Смежные вопросы