Jquery 点击和触摸这么长的动作



我有一个标签,当我点击按钮时

$(document).on('click touchstart', 'element', function() { /*Some code*/ });

如果手指区域下有按钮或链接,则 Tabber 开关 - 它被激活。

如何避免这种影响?

提前感谢!

像这样的东西:jsfiddle.net/r99headp(在谷歌浏览器激活的设备工具栏中)

据我所知,我认为这与被动事件侦听器和touchstart事件上的事件传播有关。当我尝试像这样将prevenDefault添加到您的偶数处理程序时:

$(function() {
$(document).on('click touchstart', '.js-next', function(e){
e.preventDefault();
$('.js-tab').click();
});
});

我在 chrome 中收到此警告:

由于目标被视为被动,无法阻止被动事件侦听器中的默认值。见 https://www.chromestatus.com/features/5093566007214080

点击该链接,您将在文档中看到以下内容:

AddEventListenerOptions 默认被动为 false。通过此更改,添加到文档中的 touchstart 和 touchmove 侦听器将默认为 passive: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();
});
});

相关内容

  • 没有找到相关文章

最新更新