Javascript userSelect对嵌套HTML元素的Hammer.js行为
我使用hammer.js支持多点触摸。默认情况下,hammer.js在处理触摸事件时抑制文本选择。这可以通过“Behavior.userSelect”选项进行控制。然而,我并不完全理解这是如何工作的。我需要的是,防止在一些顶级HTML元素中选择文本,同时允许在其子元素中选择文本 鉴于结构:Javascript userSelect对嵌套HTML元素的Hammer.js行为,javascript,html,hammer.js,Javascript,Html,Hammer.js,我使用hammer.js支持多点触摸。默认情况下,hammer.js在处理触摸事件时抑制文本选择。这可以通过“Behavior.userSelect”选项进行控制。然而,我并不完全理解这是如何工作的。我需要的是,防止在一些顶级HTML元素中选择文本,同时允许在其子元素中选择文本 鉴于结构: <div id="outer"> Outer text <div id="inner" > Inner text </div>
<div id="outer">
Outer text
<div id="inner" >
Inner text
</div>
</div>
但是,这不起作用-此代码阻止对两个div元素进行文本选择。我也尝试过防止违约,但至今没有成功
这是一把小提琴:
让我惊讶的是,外部因素影响着内部因素。如果事件冒泡显然是hammer.js使用的机制,我不希望发生这种情况。
我研究hammer.js源代码已经有一段时间了,但仍然没有弄清楚hammer.js是如何进行事件处理的,因此我基本上要回答以下问题:
// selection of "Outer text" should be impossible
$("#outer").hammer({behavior : { userSelect : "none", userDrag : "none"}}).on("hold", function(event) {
console.log("hold-event")
});
// selection of "Inner text" should be possible
$("#inner").hammer({behavior : {userSelect : false}}).on("hold", function(event) {
console.log("tap-event");
});