如何使div可以使用但是使锚点链接优先/取消div tap?

时间:2015-07-31 16:21:45

标签: javascript html css mobile-safari addeventlistener

Web开发不是我的最强点,所以如果这是愚蠢的道歉,但我希望有一个可以在移动设备上点击的div,这样我就可以拦截水龙头并做一些事情。

我在JavaScript中将touchdown事件监听器附加到div,当我点击时,我会对div进行着色以表明它已被选中。

但是,如果div中有一个锚标记<a href="..."></a>,其中包含一些文本(在这种情况下完全有效),我不希望在您单击链接时突出​​显示div。

我不确定网络开发中的术语,但有没有办法让锚标签拦截触摸,这样如果选择了锚标记,它们就不会被发送到div?

1 个答案:

答案 0 :(得分:0)

您可以在事件处理程序中使用条件来测试事件目标是否为锚点。我在我的示例中使用了click事件,但它也应该与touchdown一起使用。

&#13;
&#13;
var tapDiv = document.querySelector('#tap');

tapDiv.addEventListener('click', function(e) {
  //conditional ensures the clicked element isn't an <a>
  if (e.target.tagName.toLowerCase() !== 'a') {
    e.currentTarget.style.backgroundColor = 'orange';
  }
});
&#13;
#tap {
  padding: 8px;
  background-color: black;
}

#tap a {
  display: inline-block;
  padding: 8px;
  background-color: white;
}
&#13;
<div id="tap"><a href="#">This is the anchor</a></div>
&#13;
&#13;
&#13;