0

リンクがあります:

<a href="#" id="link">Here's my link</a>

これは通常のクリック可能なリンクではなく、次のように jQuery でコーディングされています。

 $("#link").hover(function(e) { 
    e.preventDefault();   
    $("#tv").stop().animate({marginLeft: "50px"});
    $("#tv img)").animate({opacity: 1});
})  

そのため、クリックできないリンクにカーソルを合わせた後、#tv の余白と不透明度が変化します。

ユーザーがポインタでリンク領域を2秒以上ホバーしたにのみ、これを機能させる方法はありますか?

すべてがリアルタイムで行われるようになったからです。

があることは知ってdelay()いますが、アニメーションを遅らせるだけなので機能しません。この場合、ポインターが2秒未満である場合、アクションは必要ありません。

ループなしで可能ですか?

4

3 に答える 3

2

あなたが求めているのはhoverIntentと呼ばれます。

于 2010-11-16T20:51:27.397 に答える
0
var animateTimeout;

$("#link").hover(function() {
  if (animateTimeout != null) { 
    clearTimeout(animateTimeout); 
  }
  animateTimeout = setTimeout(animate, 2000);
}, function() {
  clearTimeout(animateTimeout);
});

function animate() {
  //do animation
}
于 2010-11-16T20:55:09.677 に答える
0

ユーザーが 2 秒以内にリンクを離れた場合にコードをクリアするとともに、コードを遅らせるには必要setTimeout()です。clearTimeout()

例: http://jsfiddle.net/mNWEq/2/

$("#link").hover(function(e) {
    e.preventDefault();
    $.data(this).timeout = setTimeout(function() {
        $("#tv").stop().animate({marginLeft: "50px"});
        $("#tv img)").animate({opacity: 1});
    }, 2000);
}, function(e) {
    clearTimeout($.data(this,'timeout'));
});
于 2010-11-16T20:56:03.370 に答える