用于嵌套HTML元素的userSelect的Hammer.js行为

时间:2014-04-24 14:15:31

标签: javascript html5 hammer.js

我使用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究竟是如何进行事件处理的,所以我基本上不得不提问:

  1. 如何解决我的初始问题?
  2. Hammer.js如何处理浏览器事件以及如何处理嵌套层次结构的事件?
  3. 任何帮助都将不胜感激。

    祝你好运

    本杰明

0 个答案:

没有答案