0

可能な限り最も簡潔な方法で、バックボーン イベントで HoverIntent jQuery プラグインを使用したいと思います。

イベントは次のとおりです (わかりやすくするために簡略化しています)。

events:
 'mouseenter'                      : 'onMouseEnter'
 'mouseleave'                      : 'onMouseLeave'

onMouseEnter: ->
  @$('.foo').show()      

 onMouseLeave: ->
  @$('.foo').hide() 

基本的に、誰かがページ上でマウスを動かしたときにぎくしゃくした表示と非表示をしたくないので、HoverIntent が適しているようです。私はすでに自分のプロジェクトに含めており、準備ができています...しかし、バックボーン ビューで適切に呼び出す方法がわかりません。提案?

4

2 に答える 2

1

バックボーンで使用できるはずのカスタムイベントを追加するホバーインテントには、いくつかの異なるバージョンがあります。https://github.com/LeMisterV/jquery.hoverintentをご覧ください。mouseenterintentとを使用できるはずですmouseleaveintent

于 2013-02-01T03:43:13.897 に答える
1

受け入れられた回答のプラグインは維持されなくなり、減価償却された jQuery 関数を呼び出すことに注意してください。プラグインは、プラグインの 120 行目で$.event.handle.call(this.elem, this.event)置き換えることにより、現在のバージョンの jQuery で動作するように更新できます。$.event.dispatch.call(this.elem, this.event)

しかし、互換性の問題にパッチを適用した後でも、プラグインがあまりにもグリッチで、私の目的には反応しないことがわかりました。setTimeout代わりに、要素がまだホバーされているかどうかを確認するチェックで mouseenter/mouseleave コールバックをラップすることで、hoverintent 機能セットをスプーフィングしました。例えば:

function eventCallback(){
    setTimeout(function() {
        if ($(e.target).is(":hover")) {
            //do your code
        }
     }, 100);
}

タイムアウトのタイマーを好みに合わせて調整すると、ユーザーが一定の遅延後にホバーし続けた場合にのみ関数が実行されます。

于 2015-01-07T17:00:31.227 に答える