をダブルクリック私はクリックやdoubleclicksを区別するための次のコードを持っている:は、単一の間で区別し
observeSingleAndDoubleClick: function (element, singleClickHandler, doubleClickHandler, timeout) {
var clicks;
$(element).observe('click', function (event) {
++clicks;
if (clicks === 1) {
var timeoutCallback = function (event) {
if (clicks === 1) {
singleClickHandler.call(this, event);
} else {
doubleClickHandler.call(this, event);
}
clicks = 0;
};
timeoutCallback.bind(this).delay(timeout/1000);
}
}.bind(this));
}
問題:遅延コールバックが呼び出されたときにイベントはもう住んでいません。 Firefoxでは動作しますがIE8では動作しません。クリックハンドラに渡されるイベントオブジェクトは、イベント自体が既に渡されているため「死んでいる」。
誰でもこの問題を解決する方法をアドバイスしていますか?
私はまったくこれをやりません。ブラウザタイマーの信頼性は低いので、ユーザーを夢中にさせるでしょう。ウェブは一般的にはダブルクリックをしません。 – Pointy
なぜonclickとondblclickを使用しないのですか?それをサポートしていないオブジェクトですか? http://msdn.microsoft.com/en-us/library/ms536921%28v=vs.85%29.aspx https://developer.mozilla.org/en/DOM/element.ondblclick – mplungjan
@mplungianでもいくつかの種類のタイマーコードを追加する必要があります。どうして?すべての "dblclick"も最初に "クリック"イベントを発生させるからです。したがって、 "クリック"イベントハンドラは、 "dblclick"も発生するのを待つ必要があります。それは混乱です。 – Pointy