event.preventDefault() 在移动设备上不起作用

event.preventDefault() doesn't work on mobile

本文关键字:不起作用 移动 preventDefault event      更新时间:2023-09-26

我使用魅力模板来开发Web App。但是,子菜单无法在移动设备上打开。

这是 hmtl 代码:

<li class="accordion">
     <a href="#"><i class="icon-tasks"></i><span class="hidden-tablet"> Manage Task</span></a>
        <ul class="nav nav-pills nav-stacked">
            <li>
             <a class="ajax-link" href="<?php echo $this->Html->url(array('controller' => 'Tasks', 'action' => 'index/1')); ?>"><i
                                            class="icon-list-alt"></i>
                <span class="hidden-tablet">My Assigned Tasks</span>
             </a>
             </li>
             <li>
             <a class="ajax-link" href="<?php echo $this->Html->url(array('controller' => 'Tasks', 'action' => 'index/2')); ?>"><i
                                                class="icon-list-alt"></i>
               <span class="hidden-tablet">My All Tasks</span>
             </a>
              </li>
    <li>
         <a class="ajax-link" href="<?php echo $this->Html->url(array('controller' => 'Calendars', 'action' => 'index')); ?>"><i
                                            class="icon-list-alt"></i>
        <span class="hidden-tablet"> Assign Tasks</span>
        </a>
        </li>
</ul>

这是 js 代码:

$('.accordion > a').click(function (e) {
        e.preventDefault();
        var $ul = $(this).siblings('ul');
        var $li = $(this).parent();
        if ($ul.is(':visible')) $li.removeClass('active');
        else                    $li.addClass('active');
        $ul.slideToggle();
    });
    $('.accordion li.active:first').parents('ul').slideDown();

我认为 e.preventDefault() 在移动设备上不起作用,所以当单击标签时,它仍然会渲染并且不显示子菜单。

请帮我重新喜欢这个问题。谢谢。

尝试将点击触摸启动事件绑定在一起,如下所示:

$('selector').on('click touchstart', function(e)
{
     e.preventDefault();
});

或者,您可以实现一个帮助程序脚本,如 Touche.js

获取使用 jQuery 应用的点击事件,并以静默方式重新映射它们 支持触摸的设备的"触摸端"事件。

对我来说

,更好的解决方案是使用点击点击事件

    $('selector').on('click tap', function(e)
{
     e.preventDefault();
});

如果您使用 touchstart,则无法滚动此链接