我创建了一个应该响应悬停 ( 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()