へー!
私はここで頭がおかしいかもしれませんが、これを理解することはできません。
javascript で基本的な hover() 関数を使用して水平メニューを作成しています。アンカーを離れると、ホバー効果が消える前に短いタイムアウトがあります。
だから私がやりたいこと: アンカーの ID の後にタイムアウトに名前を付けます。ここで、mouseenter で正しいタイムアウトを再び停止するために、マウスリーブがトリガーされます。
Mouseenter で、ID を取得してホバーしているアンカーを確認し、この ID のタイムアウトをキャンセルして、ホバーしたアンカーに hvr-Class を追加します。
var t = $(this).attr('id');
clearTimeout(t);
$(this).addClass('hvr');
そしてMouseleaveでは、基本的にこれをやりたい:
$(this).attr('id') = setTimeout('doSoemthing()',66);
しかし、式は = の左側では許可されていないため、エラーが発生します。私は次のようなことを考えました:
var ts = $(this).attr('id');
ts = setTimeout('doSoemthing()',66);
しかし、変数 t を上書きするだけなので、それも機能しません。代わりに、タイムアウト名の変数の値を「印刷」したいと思います。固定のタイムアウト名を使用した場合、すべてが魅力的に機能しますが、リンクごとに (同じ) タイムアウトが 1 つしかないため、それは行われません。
これを行う方法はありますか?それとも私はトラックから外れていますか?
それは完全な機能です:
$("nav a").hover(
function(){
// On MouseEnter
var t = $(this).attr('id');
clearTimeout(t);
$(this).addClass('hvr');
},function(){
// On MouseLeave
$(this).attr('id') = setTimeout(function(){doSomethingHere},66);
}
);
よろしくお願いします。