将hover和鼠标悬停在同步jquery效果上

时间:2011-07-08 18:56:53

标签: jquery

我有一个悬停效果的按钮:

$('.donations').hover(function() {
    $(this).find('#donate_expand_top').hide().stop(true, true).animate({
        height: 'toggle'
    }, {
        duration: 200
    });

我现在需要在同一个按钮上添加一个点击效果,以便它对触摸友好。我使用$('.donations').click(function(){...很容易理解这个概念,但问题在于将这两种效果结合起来却无法正常工作。一旦我点击按钮,我也会徘徊,所以它试图同时触发两者并且都不起作用。

有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:1)

我处理它的方式:

  1. 使用modernizr检测用户的设备是否启用了触控功能。您还可以使用任何其他方式来检测此信息。

  2. 相应地应用你的悬停/点击绑定。

答案 1 :(得分:0)

这不是最优雅的解决方案,但它会跟踪用户与按钮的互动并在悬停时触发点击事件:

var interactingWithBtn = false;
$('#donate_expand_top').hover(function() {
    if(!interactingWithBtn) {
       interactingWithBtn = true;
        $('#donate_expand_top').trigger('click');
    }
},
function() {
    interactingWithBtn = false;
});

$('#donate_expand_top').click(function() {
    if(!interactingWithBtn)
        interactingWithBtn = true;
    $(this).find('#donate_expand_top').hide().stop(true, true).animate({
        height: 'toggle'
    }, {
        duration: 200
    });
});