2

我创建了一个应该响应悬停 ( mouseenter/ mouseleave) 和click事件的菜单,因此它可以与鼠标和触摸屏一起使用。

这是一个非常简化的版本:

$('.menu-item')
  .on('click', function(e) {
    $(this).toggleClass('active');
  })
  .on('mouseenter', function(e) {
    e.stopImmediatePropagation();
    $(this).addClass('active');
  })
  .on('blur mouseleave', function(e) {
    $(this).removeClass('active');
  });
.menu-item {background:red; text-align:center; padding:20px 0;}
.active {background:green;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div class="menu-item">test</div>

我遇到的问题是触摸板触发元素被触摸时的事件,这会导致mouseenter类被添加,然后关闭。我添加了, 但两个处理程序仍然由同一个事件触发。click'active'stopImmediatePropagation()

4

0 回答 0