これはどのように行われますか?ダブルクリックイベントが検出された場合、クリック/マウスアップイベントをキャンセルする必要があります
答えて
これは良い質問ですが、実際には簡単にはできないと思います。 (Some discussion on this)
あなたがこの機能を持っていることが重要超大型のであれば、あなたはそうのようにそれをハック可能性:
function singleClick(e) {
// do something, "this" will be the DOM element
}
function doubleClick(e) {
// do something, "this" will be the DOM element
}
$(selector).click(function(e) {
var that = this;
setTimeout(function() {
var dblclick = parseInt($(that).data('double'), 10);
if (dblclick > 0) {
$(that).data('double', dblclick-1);
} else {
singleClick.call(that, e);
}
}, 300);
}).dblclick(function(e) {
$(this).data('double', 2);
doubleClick.call(this, e);
});
そして、ここではexample of it at workです。
コメントに指摘されているように、上記のプラグインがありますが、私は上記のことをやっていますが、あなたのためにパッケージ化していますので、醜いものを見る必要はありません。FixClick
これはうまくいくようですが、0.5秒間の通常のクリックを検出しないという別の問題があります。私はもちろん、時間を短縮することができますが...ああ。私はこれを自分自身で理解します。とにかくありがとう。 –
ええ、私は250と思っているか、それほど少なくても、おそらくダブルクリックまで期待するのは妥当でしょう。私はこれについていくつかの深刻なグーグルをやってきたし、明らかにこれはあなたが得る最高です。あなたが気分が良くなるならば、醜いものを隠すためにプラグインを作ることができます。 :) –
興味深い、まだこれを試していなかったし、実際にそれを行うためにハックした方法のように見えます。しかし、イベントの観点から見ると、クリックイベントが2回呼び出されることは意味があります。 – jitter
Raymond Chenは、Windowsの文脈で話しているが、ブラウザベースのUI設計に関連していると語っているが、implications of single-versus-double clickingのいくつかについて議論している。
基本的に、ダブルクリックで行われる操作は、1回のクリック後に行うべき論理的な操作です。たとえば、デスクトップのUIでは、ワンクリックで項目が選択され、ダブルクリックすると開きます(ファイルを開く、アプリケーションを起動するなど)。ユーザーはファイルを選択して開く必要があるため、ダブルクリック操作の前にシングルクリック操作を行っても問題ありません。
ダブルクリックアクションがシングルクリックアクションと完全に無関係なUIコンポーネントがある場合、システムが実際にダブルクリックした後にシングルクリックアクションが発生しないようにする必要があるあなたのデザインを再考するべきです。ユーザーは演技に慣れていないので、扱いにくく直観的であることがわかります。
このようにしたい場合は、デバウンス手法を使用する必要があります(この場合、すべてのシングルクリックアクションが遅延されます)。そうでない場合、ダブルクリックハンドラは、シングルクリックハンドラ
また、一部のユーザーは非常に長いダブルクリック時間を設定することに注意してください。例えば、関節炎の手を持つ人は、自分のシステム環境設定で2回以上のクリック時間を持つかもしれないので、あなたが選んだ任意の時間に基づいたデバウンス技術は、あなたのUIコンポーネントにはアクセスできない単一のクリック動作を取ることは、ダブルクリック動作を排除する。私が知る限り、「ワンクリックで直前に起こったことを元に戻す」テクニックは、このための実行可能な回避策です。
jQuery Sparkleは、シングルクリックのカスタムイベントを実装することで、このためのきれいでエレガントなソリューションを提供します。これにより、あなたがそう、ちょうど他のイベントと同じように使用することができます:
$('#el').singleclick(function(){});
// or event
$('#el').bind('singleclick', function(){});
をまたクリックのシリーズの最後と最初のクリックのカスタムイベントを提供します。また、lastclickカスタムイベントは実際にクリック数を戻します!だからあなたはこれをすることができました!
$('#el').lastclick(function(event,clicks){
if (clicks === 3) alert('Tripple Click!');
});
カスタムイベントhereを定義するためのソースコードがあります。
これはAGPLライセンスの下で公開されているので、自由に心配する必要はありません。:-)それはまた、日常的に積極的に開発されているので、決して短いサポートにはなりません。
しかし、最も重要なのは、プラグインと拡張機能をはるかに簡単に開発できるようにするためのDRY Plugin/Effect Frameworkです。この目標を達成するのに役立つことを願っています!
フォームを送信するボタンの場合(元のポスターの場合は必ずしもそうではありませんが、他の人がGoogle経由でここに来る場合もあります)、より簡単なオプションは、クリックイベントハンドラでクリックされます:
$(selector).click(function(e) {
$(this).prop('disable', true);
}
- 1. アニメーションが表示されていない場合、アニメーションをキャンセルする必要がありますか?
- 2. このプログラムストリップは検索されたディレクトリを出力しますが、見つからない場合はメッセージを出力する必要があります
- 3. LinkButtonが2回クリックする必要がある場合があります
- 4. リンクをダブルクリックする必要がある場合があります
- 5. Eclipseがある場合はJava SDKをインストールする必要があります
- 6. 長さがNULLの場合、条件を渡す必要があります
- 7. アドバンスドExcel Sumif(VBAが必要な場合があります)
- 8. Oracleに接続する場合は、一括消去してキャンセルする必要がありますか?
- 9. ビューがjavascriptでレンダリングされた場合、まだhtmlに応答する必要がありますか?
- 10. フォームがwebviewに提出された場合、私が検出できる方法はありますか?
- 11. 元のコンテンツが分析された場合は、elasticsearch copy_toを再分析する必要がありますか?
- 12. ネイティブフレームワークが変更された場合、バインディングを再作成する必要がありますか?
- 13. 新しいデータセンターが追加された場合、修理を実行する必要があります
- 14. ScheduledExecutorService:シャットダウンを呼び出す必要がある場合
- 15. ボックスに入力された言語の文字またはテキストを検出する必要があります
- 16. OpenCV - 顔が検出されたときにテキストを表示する必要があります
- 17. 要求が中止されました:要求がキャンセルされました:要求がキャンセルされました
- 18. PLSQLネストされたレコードを照合する必要があります
- 19. 入力ボックスがjqueryで埋められる場合、ajax関数を呼び出す必要があります
- 20. ++ varを使用する必要がある場合はありますか?
- 21. イメージが返された場合は、cvReleaseImageが必要ですか?
- 22. foreach内にノックアウトが検出された場合、ノックアウト検出
- 23. VBOを変更する必要がある場合、VAOを再構築する必要はありますか?
- 24. ビューがない場合は、onLayoutをオーバーライドする必要があります
- 25. UIWebViewがスクロールしてスクロールをキャンセルするオプションがある場合にイベントが必要です
- 26. 条件が満たされない場合は、入力に戻る必要があります
- 27. なぜcrcを反転させる必要がありますか?どのような場合にはこれを行う必要がありますか?
- 28. 弾性検索チュートリアルOR検索(結合する必要があります)
- 29. Javascriptドロップダウンボタンが選択されている場合、テキストボックスは色を変更する必要があります
- 30. この場合、ネストされたクラスを使用する必要がありますか?
同じ要素またはドキュメント全体については、 – rahul