簡體   English   中英

如何防止Dojo滑動手勢冒泡?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM