javascript - 点击事件仅在移动设备上第二次有效,但在桌面上正常

标签 javascript jquery html css

我已经对此进行了研究并尝试了诸如添加 e.preventDefault()return false 之类的操作,但没有成功。下拉效果只发生在第二次点击时,尽管它发生在桌面的第一次点击上。

$('.menu-item-has-children').click(function(e) {
        if ( $(this).hasClass('menu-item-slide-in') ) {
            $('.submenu-expand').removeClass('submenu-expand');
            $('> .sub-menu', this).addClass('submenu-expand');
        }
    });

它基本上只是一个移动导航菜单。当您单击带有子项的链接时,它们会展开,而任何其他展开的菜单都会折叠。

这是一些带有 li 的 HTML 示例,其中包含 menu-item-slide-in 类。它取自 WordPress 导航。

<li id="menu-item-114" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-114 menu-item-slide-in" aria-haspopup="true"><span class="fa fa-chevron-down main-links-color" aria-hidden="true"></span><a href="#">Company</a>

<ul class="sub-menu">
    <li id="menu-item-103" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-103"><a href="http://localhost/jbec/history/">History</a></li>

最佳答案

在监听 click 事件之后,还要监听 touchend 事件。单击事件可能不像您认为的那样在触摸屏上起作用。在 iOs 上,在点击事件被触发之前必须发生超时,而在 Android 上,有时根本不使用点击事件来指示点击。收听 touchend 事件将解决您的问题。

关于javascript - 点击事件仅在移动设备上第二次有效,但在桌面上正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41960665/

相关文章:

javascript - 拖放多个文件上传到单个文件上传

javascript - 如何使用HTML5制作演示文稿?

javascript - JQuery - 单击时切换文本无法正常工作

html - 更改 Flash 内容的 z 索引

html - CSS - 如何将容器宽度调整为段落长度,防止它换行?

javascript - Opera 和 IE8 中 AJAX 调用失败

javascript - require(events) === events.EventEmitter

javascript - 使用 Ember-Data 保存时所有项目的数据重复

javascript - 最简单的 JavaScript HTMLEncode lib/函数实现是什么?

jquery - 选择选项以更改所选选项的文本颜色在 IE9 中不起作用