我有一个焊接设备,当我在按键敲击与jQuery的点击和触摸这么久行动
$(document).on('click touchstart', 'element', function() { /*Some code*/ });
的焊接设备的开关,如果在手指地区有按钮或链接 - 这是激活。
如何避免这种影响?
提前致谢!
事情是这样的:jsfiddle.net/r99headp(谷歌浏览器激活的设备工具栏)
我有一个焊接设备,当我在按键敲击与jQuery的点击和触摸这么久行动
$(document).on('click touchstart', 'element', function() { /*Some code*/ });
的焊接设备的开关,如果在手指地区有按钮或链接 - 这是激活。
如何避免这种影响?
提前致谢!
事情是这样的:jsfiddle.net/r99headp(谷歌浏览器激活的设备工具栏)
至于我可以告诉大家,我认为这与被动的事件侦听器,并在touchstart
事件事件传播的事情。当我尝试添加prevenDefault
你,甚至处理像这样:
$(function() {
$(document).on('click touchstart', '.js-next', function(e){
e.preventDefault();
$('.js-tab').click();
});
});
我在Chrome中得到这样的警告:
无法的preventDefault由于目标被动事件监听器里被视为被动。见https://www.chromestatus.com/features/5093566007214080
下面这个链接,你会在文档中看到这一点:
AddEventListenerOptions被动默认为false。有了这个改变,touchstart和touchmove监听器添加到文档将默认为被动:true(因此,将忽略preventDefault的调用)。
追下来我碰到这个答案来了SO:https://stackoverflow.com/a/39187679/1819684这表示,jQuery有与传球选择到addEventListener
当前的一个问题。这意味着目前你无法使用jQuery并设置passive: false
。所以我返工你的示例代码这样:https://jsfiddle.net/w9h4an81/
$(function() {
document.addEventListener('touchstart', function(e) {
e.preventDefault();
$('.js-tab').click();
}, {passive: false});
$(document).on('click', '.js-next', function(e){
$('.js-tab').click();
});
});
如果只使用jQuery,你必须做这样的事情做到这一点:https://jsfiddle.net/6377wdhc/你不能在document
听。
$(function() {
$('.js-next').on('click touchstart', function(e){
e.preventDefault();
$('.js-tab').click();
});
});
非常感谢!一切都在工作! – Dan
您试图避免哪种效果? “页面移动到手指下的区域”或“如果有按钮或链接 - 它会激活”? – gforce301
我很抱歉,忘了说我有一个tabber,我点击了一个tab上的按钮,tabber开关,然后我点击了第二个tab上的按钮。两个都。 – Dan
尝试改变你的点击处理程序:'$(document).on('click touchstart','element',function(e){e.preventDefault();/*一些代码* /});' – gforce301