1

質問は何度か投稿されており、addClass を遅らせる方法です。

私はこれを得た:

$("#menu ul li").hover(function(){
  $(this).addClass("hover");
},function(){
  $(this).removeClass("hover");
})

同様のものが必要ですが、500ミリ秒程度後にクラスが追加されます。これまでの最良の答えは、settimeout を使用したものです。たぶん、実際の例が必要なだけかもしれません: jQuery で 5 秒待つ方法は?

addClass でなければならないため、hooverIntent は機能しません。

Br. アンダース

更新: 4 つの優れた回答です。ありがとう。hoverIntent が機能するとは思わなかった理由がわかりません。回答に見られるように使用できます。実際には、すべての回答をそれぞれ長所と短所で使用できます。別のプラグインを含める必要がありますが、hoverIntent を使用します。hoverIntent の長所は、感度を設定できるため、addClass の遅延を設定できるだけでなく、マウスが領域の上にまだ配置されているときに最初にカウントを開始することです (感度が好まれる場合はそうではありません)。

4

4 に答える 4

4
$("#menu ul li").hover(function(){
  var $this = $(this);
  var ovt = setTimeout(function(){$this.addClass('hover'); clearTimeout(ovt);}, 500);
},function(){
  var $this = $(this);
  var out = setTimeout(function(){$this.removeClass('hover'); clearTimeout(out);}, 500);
});

それはあなたが探しているものですか?

于 2010-02-15T13:55:24.930 に答える
2

hoverIntentが機能しない理由がわかりません:

$("#menu ul li").hoverIntent({    
    sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)    
    interval: 200, // number = milliseconds for onMouseOver polling interval    
    timeout: 500, // number = milliseconds delay before onMouseOut    
    over:function(){
        $(this).addClass("hover");
    },
    out: function(){
        $(this).removeClass("hover");
    }
});
于 2010-02-15T13:56:18.333 に答える
1

setTimeout と hoverintent を脇に置いて (これらが最も明白な方法ですが)、これに null アニメーション コールバックを使用できないでしょうか?

$("#menu ul li").hover(function(){
  $(this).animate("",500,"",function(){$(this).addClass("hover")};
},function(){
  $(this).animate("",500,"",function(){$(this).removeClass("hover");
})
于 2010-02-15T13:59:29.543 に答える
1

このようなもの

$(function(){
    $("#menu ul li").hover(function(){
        var elem = $(this);
        setTimeout ( function(){
            elem.addClass("hover");
        }, 1000) ;
        },function(){
        var elem = $(this);
        setTimeout ( function(){
            elem.removeClass("hover");
        }, 1000) ;
    })
});
于 2010-02-15T13:56:41.450 に答える