10

バックボーンビューで、次のようなイベントを定義しました。

events : {
  'click .elm' : 'select',
  'dblclick .elm' : 'toggle'

},

select: function(e){
    e.preventDefault();
    console.log('single clicked');
}

toggle : function(e){
    e.preventDefault();
    console.log('double clicked');
}

シングルクリックイベントリスナーとダブルクリックイベントリスナーを同じ要素にバインドしまし.elmた。この要素をダブルクリックすると、次の出力が得られます。

single clicked single clicked double clicked

試しpreventDefault()てみstopImmediatePropagation()ましたが、問題は解決しませんでした。

では、ダブルクリックしたときにシングルクリックイベントが発生するのを防ぐにはどうすればよいですか?

4

3 に答える 3

7

jQueryのドキュメントでは、実行していることに対して特に推奨しています。

同じ要素のイベントclickとイベントの両方にハンドラーをバインドすることはお勧めできません。dblclickトリガーされるイベントの順序はブラウザーごとに異なり、click前に2つのイベントを受信するものdblclickと、1つだけを受信するものがあります。ダブルクリックの感度(ダブルクリックとして検出されるクリック間の最大時間)は、オペレーティングシステムとブラウザーによって異なり、多くの場合、ユーザーが構成できます。

あなたが見ているのは、まさに期待されていることです(もちろんブラウザによって異なります)。問題を回避する唯一の方法は、タイマーを設定し、手動でシングルクリックとダブルクリックを区別することです。次に、タイマー値を調整し、さまざまなブラウザやオペレーティングシステムをチェックして、ほとんどの場所で機能するようなふりをする必要があります。

代わりに、シングルクリックアクションで個別のコントロールを使用することを強くお勧めします。ダブルクリックはかなり不親切な時期であり、慣れているので我慢するだけです。

于 2012-11-08T17:33:07.020 に答える
5

これは、バックボーン自体の問題ではありません。同じボタンでシングルクリックイベントとダブルクリックイベントの両方を処理する方法についてです。

見る

  1. ダブルクリックイベントが検出された場合、クリック/マウスアップイベントをキャンセルする必要があります

  2. jQueryを使用したJavascript:同じ要素をクリックしてダブルクリックすると、効果が異なり、一方が他方を無効にします

更新:しかし、あなたがそれに対処する必要がなかったなら、それはより良いでしょう。以下のmuは短すぎる答えを参照してください!

于 2012-11-08T11:14:46.207 に答える
0

return false;選択と切り替えの最後に追加してみてください。

于 2012-11-08T10:55:12.523 に答える