2012-02-22 2 views
1

После загрузки моего мобильного сайта jQuery мне нравится прокручивать позицию div. Работы с использованием этого кодаsilentScroll будет отменен после загрузки страницы

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

я называю функцию $(document).ready, но после вызова функции и silentScroll в положение, кажется, рамочный Автопрокрутка назад к началу страницы ... Кто знает, как предотвратить такое поведение ? (Я также пробовал события pageinit, pageshow ...) Должен ли я перезаписать функцию или вызвать другое событие? Любая помощь или предложение приветствуются :)

ура.

+0

Я не знаком с JQuery-Mobile, но, похоже, это может привести вас к ответу: http://jquerymobile.com/test/docs/api /globalconfig.html –

+0

Любая подсказка, какое свойство установить? – Nils

ответ

0

После того как я боролся с этим, я, кажется, нашел причину, а также обходной путь. Похоже, что анимация, используемая в changePage, берет на себя ответственность за тихий свиток. Вы можете узнать больше об этом here. На той же странице в комментариях также начинают обсуждаться различные события, такие как pagebeforeshow или pageaftershow - к сожалению, для меня не было никаких результатов.

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

Попробуйте:

function changeViewport(){ 
     var errorMsg = $('.dataerror').first(); 
     if(errorMsg != null) { 
      var newPosition = errorMsg.offset(); 
      setTimeout(function(){$.mobile.silentScroll(newPosition.top)}, 500); 
     } 
} 
Смежные вопросы