jQuery Mobile - 在pagecontainer更改时未触发的事件

时间:2014-07-20 06:03:04

标签: jquery-mobile

我想在加载页面时滚动到特定的div。 Jquery Mobile 1.4。 如果只加载页面,它可以正常工作,但如果使用API​​加载则不起作用。

使用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'));
});

理由是,在扩大可折叠性时,流程变得更加复杂。我想隐藏其他可折叠选项,除非有人滚动并逐步完成工作流程,就好像它是一组新页面一样。

由于 约翰

1 个答案:

答案 0 :(得分: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是一个挑战。