2

縦スクロールが必要な長いコンテンツを含むことができるバックボーンビューページ(またはウィンドウ)があります。これが発生すると、ビューポートはウィンドウの上部ではなく中央に自動的に配置されます。ページの内容が長いかどうかに関係なく、ページの上部で開きたいです。scrollToのいくつかのバリエーションを試しましたが、どれも機能しないようです。私はBackbonejsを使用しており、Coffeescriptで記述されていることに注意してください。ここにあります:

:coffeescript
  $ ->
    model = new Backbone.Model
      forcastTickInterval: #{xx_interval(@type_well.num_rows)}
      typeWell: #{@type_well.to_json}
      x_labels: #{price_array}
      disc_rate_array: #{disc_rate_array}
      disc_pv10_array: #{disc_pv10_array}
    view = new VGStream.Views.TypeWells.Show(
      model: model
    ).render()
    VGStream.App.router = new VGStream.Routers.Tabs()
    VGStream.App.currentView = view
    Backbone.history.start()

タブルーターもかなりシンプルです。

class VGStream.Routers.Tabs extends Backbone.Router
  routes:
    '' : 'index'
    ':name' : 'viewTab'

  index: ->
    firstTab = $('.tab-nav li a').first()
    firstTab.scrollTop(0)
    if firstTab
      @navigate firstTab.attr('href'),
        trigger: true

  viewTab: (name) ->
    selectedTab = $(".tab-nav li a[href='##{name}']").parent()
    unless selectedTab.hasClass 'active'
      $('.tab-nav li.active').removeClass 'active'
      selectedTab.addClass 'active'
      $('.tab').hide()
      $(".tab##{name}").show()
      if VGStream.App.currentView? && VGStream.App.currentView[name]?()
        VGStream.App.currentView[name]()

興味深いのは、Chromeコンソールを開いて次のコマンドを入力したときです。

this.scrollTo(0)

ウィンドウは正しくページの上部に移動します。

この問題を解決する方法がわかりません。

よろしくお願いします。

4

2 に答える 2

1

やってみました

$(document).scrollTop(0);

http://api.jquery.com/scrollTop/

于 2013-03-25T18:42:52.410 に答える
0

これは古い質問であることを理解してください。ただし、プログラミングの問題に答えるために古いSOの質問を検索する人にとっては、以下の質問が役立つかもしれません。

だから、$(document).scrollTop(0);動作します。また、Bootstrapナビゲーションバーでも正常に機能します。しかし、重要なのはそれをいつ呼び出すかです。ウィンドウであるDOMを操作しているので、これはビューがレンダリングされた後に行う必要があります。view.render()が終了した後にBackbone.jsイベントをチェックして、ビューがレンダリングされた後にイベントを発生させる方法を確認してください。

私はBackbone.Marionetteを使用しているので、両方 onRenderonShowイベントが自動的に発生します。これは私にとって素晴らしい働きをします:

  onRender: function(){
    $(document).scrollTop(0);
  }
于 2015-07-30T09:11:08.370 に答える