【问题标题】:silentScroll will be undone after page is loaded页面加载后将撤消silentScroll
【发布时间】:2012-11-14 23:49:11
【问题描述】:

加载我的 jQuery 移动网站后,我喜欢滚动到 div 的位置。使用此代码工作

function changeViewport(){
          var errorMsg = $('.dataerror').first();
          if(errorMsg != null) {
              var newPosition = errorMsg.offset();
              $.mobile.silentScroll(newPosition.top);
          }
    }

我在$(document).ready 上调用该函数,但在调用该函数并将silentScroll 调用到该位置后,框架似乎自动滚动回页面顶部......有人知道如何防止这种行为吗? (我还尝试了事件 pageinit、pageshow ......) 我必须覆盖一个函数或触发另一个事件吗?欢迎任何帮助或建议:)

干杯。

【问题讨论】:

标签: javascript jquery jquery-mobile


【解决方案1】:

在我自己为此苦苦挣扎之后,我似乎找到了原因和解决方法。 changePage 中使用的动画似乎优先于无声滚动。您可以阅读更多关于此here 的信息。在同一页面上,cmets 也开始讨论不同的事件,例如 pagebeforeshowpageaftershow - 不幸的是,这些对我来说没有任何结果。

我发现的解决方法是将 .silentScroll 包裹在半秒的超时内。它看起来有点波涛汹涌,但它似乎对我有用。希望这会有所帮助。

试试这个:

function changeViewport(){
      var errorMsg = $('.dataerror').first();
      if(errorMsg != null) {
          var newPosition = errorMsg.offset();
          setTimeout(function(){$.mobile.silentScroll(newPosition.top)}, 500);
      }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2015-07-31
    相关资源
    最近更新 更多