JQuery 移动 pagecontainertransition 事件未按预期工作
JQuery mobile pagecontainertransition event not working as expected
我有一个 jQuery 移动网站,进入后我想跳转到页面上的一个部分:
$(document).on('pagecontainertransition', function(event, ui){
$(window).scrollTop( $("#mysection").offset().top);
console.log("pause");
});
如果我从 Javascript 控制台加载页面和 运行 scrolltop 行,它工作正常。
如果我在 console.log("pause");
行放置一个 Javascript 断点,我会看到屏幕上的页面正是我想要的。页面跳转到我的部分。但是,如果我释放断点,它会跳回到页面顶部。
根据文档和谷歌搜索,我了解到
pagecontainertransition
是最后一个 Jquery 移动事件。
我错过了什么?
试试这个
$(document).on('pagecontainertransition', function(event, ui){
$('html, body').animate({
scrollTop: $("#mysection").offset().top
}, 1000);
console.log("pause");
});
jQuery Mobile 提供了一种滚动方法,您可以使用:
https://api.jquerymobile.com/jQuery.mobile.silentScroll/
此外,当加载页面时 jQM 会自动滚动到顶部,因此您可能遇到了时间问题并且需要引入一个小的延迟:
$(document).on('pagecontainertransition', function(event, ui){
if (ui.toPage.prop("id") == "page2"){
setTimeout(function(){
$.mobile.silentScroll( $("#mysection").offset().top);
}, 100);
}
});
感谢 Akki619 和 ezanker 让我走上正轨:
我的问题是 jquery 手机在加载后滚动到页面顶部引起的。我不想使用超时(在旧移动设备上可能太短或在台式计算机上太长)。我四处搜索并从 https://forum.jquery.com/topic/jquery-mobile-scroll-to-top-of-page-on-page-load 我得到了一种在 JQM 中覆盖此行为的方法,它满足了我的需要。正如那里给出的那样,我将以下代码添加到我的 javascript:
(function($)
{
$( document ).on( "mobileinit", function()
{
var silentScroll = $.mobile.silentScroll;
$.mobile.silentScroll = function( ypos )
{
if ( $.type( ypos ) !== "number" )
{
// FIX : prevent auto scroll to top after page load
return;
}
else
{
silentScroll.apply(this, arguments);
}
};
});
}
(jQuery));
我有一个 jQuery 移动网站,进入后我想跳转到页面上的一个部分:
$(document).on('pagecontainertransition', function(event, ui){
$(window).scrollTop( $("#mysection").offset().top);
console.log("pause");
});
如果我从 Javascript 控制台加载页面和 运行 scrolltop 行,它工作正常。
如果我在 console.log("pause");
行放置一个 Javascript 断点,我会看到屏幕上的页面正是我想要的。页面跳转到我的部分。但是,如果我释放断点,它会跳回到页面顶部。
根据文档和谷歌搜索,我了解到
pagecontainertransition
是最后一个 Jquery 移动事件。
我错过了什么?
试试这个
$(document).on('pagecontainertransition', function(event, ui){
$('html, body').animate({
scrollTop: $("#mysection").offset().top
}, 1000);
console.log("pause");
});
jQuery Mobile 提供了一种滚动方法,您可以使用:
https://api.jquerymobile.com/jQuery.mobile.silentScroll/
此外,当加载页面时 jQM 会自动滚动到顶部,因此您可能遇到了时间问题并且需要引入一个小的延迟:
$(document).on('pagecontainertransition', function(event, ui){
if (ui.toPage.prop("id") == "page2"){
setTimeout(function(){
$.mobile.silentScroll( $("#mysection").offset().top);
}, 100);
}
});
感谢 Akki619 和 ezanker 让我走上正轨:
我的问题是 jquery 手机在加载后滚动到页面顶部引起的。我不想使用超时(在旧移动设备上可能太短或在台式计算机上太长)。我四处搜索并从 https://forum.jquery.com/topic/jquery-mobile-scroll-to-top-of-page-on-page-load 我得到了一种在 JQM 中覆盖此行为的方法,它满足了我的需要。正如那里给出的那样,我将以下代码添加到我的 javascript:
(function($)
{
$( document ).on( "mobileinit", function()
{
var silentScroll = $.mobile.silentScroll;
$.mobile.silentScroll = function( ypos )
{
if ( $.type( ypos ) !== "number" )
{
// FIX : prevent auto scroll to top after page load
return;
}
else
{
silentScroll.apply(this, arguments);
}
};
});
}
(jQuery));