1

現在、ホバーされた要素でのみ Bootstrap ポップオーバーをトリガーしようとしています。残念ながら、ページ上にあるすべてのものでトリガーされています。以下は、バックボーン スクリプトです (CoffeeScript で)。

Site.Views.Stories ||= {}

class Site.Views.Stories.IndexView extends Backbone.View
  template: JST["backbone/templates/stories/index"]

  initialize: () ->
    @options.stories.bind('reset', @addAll)

  addAll: () =>
    @options.stories.each(@addOne)

  addOne: (story) =>
    view = new Site.Views.Stories.StoryView({model : story})
    @$("#columns").append(view.render().el)

  render: =>
    $(@el).html(@template(stories: @options.stories.toJSON() ));
    @addAll()
    return this

  events: =>
    "mouseover .rating" : this.showhover

  showhover: => 
    this.$('.rating').popover('show');
4

1 に答える 1

2

.ratingビュー内に複数の要素があると思うので、次のelようにします。

this.$('.rating').popover('show');

それらすべてをヒットします。イベントを受け取るだけが必要な場合は、イベント ハンドラーのイベント引数から.rating特定のものを取得して、そうします。.rating

showhover: (ev) =>
  $(ev.currentTarget).popover('show')

私がここにいる間、他のいくつかのこと:

  1. バックボーンは自動的に を設定しなくなりました@options。必要に応じて、手動で設定@optionsする必要がありますinitialize

    initialize: (@options) -> ...
    
  2. に関数を使用する必要はありません。これで問題ありませんevents

    events:
      "mouseover .rating" : 'showhover'
    
  3. =>すべてのメソッドを実行する必要はありません。それらのいずれに対してもそれを行う必要はないと思います(events関数の代わりにオブジェクトを使用すると仮定します)が、3番目の引数を@addAll使用または指定することでそれを回避できます.@listenTobind

于 2013-11-09T22:47:00.997 に答える