平板电脑上的Mouseleave问题

时间:2014-05-15 12:11:06

标签: javascript android jquery ipad

平板电脑上是否有'mouseleave'的替代品。

情景:

在桌面上,列表项目显示在'mouseenter'上,隐藏在'mouseleave'上。

在平板电脑上,'mouseenter'会显示列表项,但在用户点击其他位置时不会将其删除。

我不想使用touchstart和touchend。

3 个答案:

答案 0 :(得分:0)

尝试使用jquery在文档上添加单击处理程序。在这个新的处理程序中隐藏列表项。

$(document).on('click:not(#list)', function() {
    // hide listitems
});

这样的东西..这可能不是最好的解决方案,但它是一个。

答案 1 :(得分:0)

您最好的选择是为触摸设备进行替代互动。最简单的方法是将一个事件监听器附加到文档中,这会在用户点击列表之外时隐藏列表项。

$(document).on('click.list', function (e) {
    var $list = $(".list");

    if (!$list.is(e.target) && $list.has(e.target).length === 0) {
        $list.hide();
    }
});

在将事件侦听器附加到文档时,将事件命名为'click.list'是一种很好的做法。

if条件检查事件目标是列表还是其子项之一。

答案 2 :(得分:0)

您可以使用.hover,如下所示:

$('.foo').hover(
function () {
$(this).find('h1').addClass("hover").end().find('input').focus();            
        },
function () {
$(this).find('h1').removeClass("hover").end().find('input').val('');            
        }
    );