![](/img/trans.png)
[英]Trying to prevent jQueryMobile swipe gesture from bubbling, but it's not working
[英]How to prevent Dojo swipe gesture from bubbling?
我有一個看似簡單的問題,但似乎無法弄清楚我要去哪里。 道場(Dojo)缺乏我的技能,所以請原諒我。
我要完成的工作 :DOM中有一個元素,我想響應滑動和單擊事件。 但是,當觸發swipe.end事件時,也會觸發click事件。 我試圖通過在事件上調用stopPropagation
和直接調用event.stop
來防止事件冒泡(我假設在這種情況下事件正在冒泡),但event.stop
。 您可以在下面查看代碼段,或查看有效的小提琴 。
的HTML
<div id='testSwipe'>Swipe Me</div>
JS
require({
}, [
'dojo/dom',
'dojox/gesture/swipe',
'dojo/on',
'dojo/_base/event'
], function(dom, swipe, on, event) {
var div = dom.byId('testSwipe');
on(div, swipe.end, function(e) {
console.log("### SWIPE");
e.stopPropagation(); // Click event still fires
event.stop(e); // Click event STILL fires
});
on(div, 'click', function(e) {
console.log("### CLICK");
});
});
在此示例中,輕掃事件將導致以下輸出:
### SWIPE
### CLICK
有什么建議么?
問題是觸發了兩個不同的事件:一個event
(帶有event.type == 'swipe'
)用於滑動,一個mouseEvent
用於單擊。 這些事件沒有冒泡。
實現您想要的一種方法是,如果剛剛觸發了swipe.end事件,則阻止click事件。 感覺有點像hack,但是可以用。 參見更新的JSFiddle 。
附帶說明:防止冒泡的Dojo方法似乎是根據docs使用dojo.stopEvent(e)
。 我確實嘗試過此方法,但正如預期的那樣,它沒有效果。
當您單擊元素時,click事件將始終觸發。 除了使用點擊事件,您還可以使用dojox / gesture / tap使用點擊手勢
on(div, tap, function(e) {
console.log("### CLICK");
});
更新了小提琴
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.