Nested 嵌套元素的Hammerjs事件顺序

Nested 嵌套元素的Hammerjs事件顺序,nested,event-handling,dom-events,hammer.js,Nested,Event Handling,Dom Events,Hammer.js,考虑两个带有“单击”事件处理程序的嵌套div: var parent=document.getElementById(“父项”); addEventListener(“单击”,函数(){ console.log(“父单击”); }); var child=document.getElementById(“child”); addEventListener(“单击”,函数(){ console.log(“子点击”); }); 使用jQuery,我成功地使用了一个技巧: 通常你会这样做: $("s

考虑两个带有“单击”事件处理程序的嵌套div:

var parent=document.getElementById(“父项”);
addEventListener(“单击”,函数(){
console.log(“父单击”);
});
var child=document.getElementById(“child”);
addEventListener(“单击”,函数(){
console.log(“子点击”);
});

使用jQuery,我成功地使用了一个技巧:

通常你会这样做:

$("some_selector").hammer().on('press', handlePress);
但要想在Hammer事件中获得正确的订单,这是可行的:

$($("some_selector").get().reverse()).hammer().on('press', handlePress);

让jQuery以相反的顺序分配事件(从树上的叶子树到父级和父级等)只是一个技巧。

我研究了这个问题,因为我遇到了同样的问题

要理解这个问题,您需要知道hammerjs如何识别手势(由几个事件组成);在这种情况下,“轻拍”手势

Hammer安装了所谓的识别器,当DOM中出现某些事件(气泡)时,识别器会被激活

当“pointerup”事件出现在
窗口时,将触发“tap”事件。
当“pointerup”-事件到达
窗口时(
事件。currentTarget
窗口
),所有注册的识别器将在该节点的事件上激活,这是按照安装顺序进行的

为了尊重传播线,“tap”识别器必须在各自元素的“pointerup”事件上触发,而不是在
窗口上触发


希望这是一个有点一致的解释。

你最终明白了吗?不幸的是,没有。我按相反的顺序注册事件处理程序。