Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript userSelect对嵌套HTML元素的Hammer.js行为_Javascript_Html_Hammer.js - Fatal编程技术网

Javascript userSelect对嵌套HTML元素的Hammer.js行为

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>

我使用hammer.js支持多点触摸。默认情况下,hammer.js在处理触摸事件时抑制文本选择。这可以通过“Behavior.userSelect”选项进行控制。然而,我并不完全理解这是如何工作的。我需要的是,防止在一些顶级HTML元素中选择文本,同时允许在其子元素中选择文本

鉴于结构:

<div id="outer">
     Outer text
    <div id="inner" >
        Inner text
    </div>    
</div>
但是,这不起作用-此代码阻止对两个div元素进行文本选择。我也尝试过防止违约,但至今没有成功

这是一把小提琴:

让我惊讶的是,外部因素影响着内部因素。如果事件冒泡显然是hammer.js使用的机制,我不希望发生这种情况。 我研究hammer.js源代码已经有一段时间了,但仍然没有弄清楚hammer.js是如何进行事件处理的,因此我基本上要回答以下问题:

  • 如何解决最初的问题
  • Hammer.js如何处理浏览器事件,以及如何处理嵌套层次结构的事件 任何帮助都将不胜感激

    致意

    Benjamin

    {userSelect:“text”}将允许您选择文本。尽管看起来外部div在内部div之上,但不管您将做什么(我已经使用了z-index css、代码层次结构和删除userSelect,但什么都不起作用),我将在不久的将来使用托盘生成代码。userSelect:“text”应该与userSelect具有相同的效果:false。同时,我们通过使用touch-action-css属性来解决我们的问题,并且通常会处理一些不同的事情。这个问题仍然让我感到困惑。
    // 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");
    });