当我正好触摸到标签元素的边框时,会触发事件,但不会触发事件。为什么会这样?
为了展示问题,我制作了这个fiddle:http://jsfiddle.net/o8cvqL0L/8/。 标签有2个事件:
为了展示问题,我制作了这个fiddle:http://jsfiddle.net/o8cvqL0L/8/。 标签有2个事件:
$('#yellow').on('touchstart', function(e) {
alert('touch');
e.preventDefault();
});
$('#yellow').on('click', function(e) {
alert('click');
});
只需在黄色元素的边界上轻触一下。 有没有办法避免这种行为?
我在Android浏览器、Safari和桌面Chrome上进行了测试。
非常感谢!
编辑:
触摸必须在元素外部,但仍在Touch的radiusX/Y内才能成为点击。
click
监听器中的clientX/Y和pageX/Y值不正确,始终显示与元素对应的坐标,而实际上并非如此。(http://jsfiddle.net/o8cvqL0L/35)
使用带有touchstart
监听器的容器似乎可以消除子元素中的这些奇怪行为,并且事件对象中的坐标是正确的。(http://jsfiddle.net/o8cvqL0L/42/)
然后,使用事件委托可以解决问题,但仅当目标元素是div
而不是链接,就像在我的先前示例中一样。这里是div
元素的解决方案:http://jsfiddle.net/o8cvqL0L/44/
我仍在寻找a
标签的解决方案和这些问题的文档原因。