ウィンドウを表示およびクリアする 2 つの関数があります。もともと、jquery hover コマンドを使用してインラインで定義していましたが$('item').hover(function() {...}, function() {...});
、これは完全に機能します。ただし、これらの関数呼び出しからコードを取得し、それらを分離して のように呼び出すと$('item').hover(function1, function2);
、結果は異なります。前者の場合、期待される動作が得られます。つまり、ホバーすると要素が表示され、マウスがホバーされた要素から離れたままになると、タイムアウト後にフェードアウトします。2 番目のバージョンでは、新しい要素が表示され、タイムアウト後にフェードアウトし、ホバー時に戻ってきません。
私が使用しているタイムアウトと関係があると思いますが、元の関数を正確にコピーしたので、理論的には同じことが起こっているはずです..またはそう単純に仮定します. それか、どこかでタイプミスをしましたが、それはわかりません。
完全なコードと html を含む Fiddles は、こちら(動作中のバージョン) とこちら(壊れたバージョン) で利用できます。
動作するコードは次のとおりです。
$('#test').hide();
var timeout;
$('a').hover(function(){
$('#test').show();
clearTimeout(timeout);
}, function(){
timeout = setTimeout(function(){
$('#test').fadeOut('fast', function(){});
}, 1000);
});
そして、失敗したのは次のとおりです。
$('#test').hide();
var timeout;
function clearWindow() {
timeout = setTimeout(function(){
$('#test').fadeOut('fast', function(){});
}, 1000);
}
function showWindow() {
$('#test').show();
clearTimeout(timeout);
}
$('a').hover(showWindow(), clearWindow());