2014-08-27 120 views
10

如何在Hammer.js(2.0.2)中停止事件傳播?相關測試(https://github.com/hammerjs/hammer.js/blob/master/tests/unit/test_propagation.js)中使用的技術不適用於所有類型的事件。如果用'按'替換'tap'事件,則測試失敗。如何停止hammer.js事件傳播

+1

FWIW在單元測試中的技巧適用於刷卡事件,所以感謝@nlyk將其引起我的注意! Hammer.js傢伙,這個庫的新版本使得它比以前更難以做到這一點,這似乎是一個恥辱。 – 2014-09-04 09:16:36

+0

提示和技巧頁http://hammerjs.github.io/tips/描述您需要設置選項{domEvents:true}以啓用stopPropagation。到目前爲止我還沒有這個工作 – 2014-12-11 09:14:13

回答

0

在你的父元素中檢查event.target是什麼。如果它不是父元素並且設置爲子元素,則忽略該事件。

例如: if(event.target!= parent){ return; }

0

爲了解決這個問題,我寫了一個小的mixin來擴展與事件傳播hammer.js:

https://github.com/josdejong/propagating-hammerjs

+1

你知道這樣改寫hammer.js的動機是什麼嗎?爲什麼事件不受限於DOM? – gipouf 2015-04-09 02:16:06

+1

如果你只有JS和沒有DOM,性能會更好。不需要考慮DOM就可以輕鬆構建。它也不是一個非常常見的用例,需要事件傳播,而且這種反模式有利於事件委託,讓單個父代處理所有事件。但有時它真的會讓你的生活更輕鬆。當擁有獨立組件時,它可能是必需的。 – 2015-04-09 08:06:57

0

在你父母的DOM綁定click事件,並stopPropagation它