我使用hammer.js进行多点触控支持。默认情况下,hammer.js在处理触摸事件时会禁止文本选择。这可以通过" behaviour.userSelect"来控制。选项。但是,我不完全理解这是如何工作的。我需要的是,防止在某些顶级HTML元素中选择文本,同时允许它在其子元素之一中。
鉴于结构:
<div id="outer">
Outer text
<div id="inner" >
Inner text
</div>
</div>
我想做这样的事情:
// 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");
});
但是这不起作用 - 此代码阻止两者 div-element的文本选择。我也玩过prevent_default,但到目前为止还没有成功。
这是一个小提琴:http://jsfiddle.net/7tWDr/6/
令我惊讶的是,外部因素会影响内部因素。我不希望这发生在事件冒泡显然是hammer.js使用的机制。 我已经研究了hammer.js的源代码很长一段时间但仍然没有弄清楚hammer.js究竟是如何进行事件处理的,所以我基本上不得不提问:
任何帮助都将不胜感激。
祝你好运
本杰明