2013-10-02 69 views
3

我想註冊一個保持事件,但「跳過」這個元素及其父母的「點擊」事件背後的邏輯......我該怎麼做?hammer.js - 如何在不傳播「click」事件的情況下注冊「hold」事件?

測試用例(請隨時到餐桌&編輯):http://codepen.io/muszek/pen/detAK

使用案例:用戶持有#foo盒開闢#bar對話框,該元素的選項。點擊任何地方(但在#bar上)關閉#bar。目前,持有#foo會打開#bar,但在釋放按鈕時立即關閉它。

+1

http://codepen.io/anon/pen/iLFqK ?? ?? – Hackerman

+0

@RobertRozas我認爲他們希望保持點擊功能的定期點擊,但不會在保持事件後觸發。 –

+0

@Robert Rozas:Anthony Grist是對的,我希望這個用戶動作只觸發「保持」(而不是點擊),而我仍然希望在不是保持事件時發生點擊。 – muszek

回答

3

Hammer.js並不真正處理本地事件。所以在這裏,您應該聽取tap事件而不是click

如果手勢是hold,我不認爲觸發事件會觸發,但如果是,則只需撥打e.gesture.stopDetect();以防止觸發多種手勢類型。 (例如,這通常用於防止release事件在swipe之後被觸發)

+0

這對我不起作用,你可以發表小提琴嗎? – AKnox

1

您無法阻止觸發本機點擊。你應該做的是聽取'點擊'而不是'點擊'。 Hammer.js將hold定義爲一個持續超過一定時間的tap。

如果您根本沒有聽取'點擊',但想要阻止href或按鈕被解僱,請將其忘記。改變一個div的按鈕和一個普通文本的href,設置它們的樣式,讓它們看起來像以前一樣,現在聽它們的「輕擊」。

相關問題