我有點擊和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 2011-02-14 14:07:49
爲什麼不使用onclick和ondblclick?它是不支持它的對象嗎? http://msdn.microsoft.com/en-us/library/ms536921%28v=vs.85%29.aspx https://developer.mozilla.org/en/DOM/element.ondblclick – mplungjan 2011-02-14 14:10:06
@mplungian即使這樣有必要添加某種計時器代碼。爲什麼?因爲每個「dblclick」都會首先觸發「點擊」事件。因此,您的「click」事件處理程序必須等待以查看是否也發生了「dblclick」。一團糟。 – Pointy 2011-02-14 14:15:46