私は、要素がプレーンテキストで表示されているメニューを作成しようとしています。マウスオーバーすると、プレーンテキストを編集するためのフィールドが表示されます。各要素の一意のsetTimeoutタイマー?
あなたがここでの例を見ることができますタイマ変数がグローバルに宣言されているので、あなたが本当にすぐに2番目のリスト要素にカーソルを合わせると、それは前の要素のためのタイマをクリア。しかし、関数内のタイマー(ここでは:http://jsfiddle.net/JYavJ/)を宣言すると、複数の要素が正しくフェードアウトされますが、要素の上にマウスを移動してから再びオンにすると、タイマーが正しくクリアされません。
基本的に、私はタイマー変数を1つの要素のホバー間で永続的に保つことに問題があります。私は成功していないDOM要素にタイマー変数を追加しようとしました。誰かがこの問題を解決する方法を知っている場合、あるいはこのメニュースタイルに完全に近づけるより良い方法を知っていれば、私はそれを高く評価します。ありがとう!参考のため、ここでのホバー機能の外で宣言タイマー付きコード
です:
ここ$('.diet_draggable').hover(function() {
var timer;
var current = $(this);
if (current.is(':hover')){
clearTimeout(timer);
$(this).children(".static_units").hide();
$(this).children(".mod_units").show();
}
else if (current.children('.mod_units').children('.list_amount').is(":focus")) {
current.children('.mod_units').children('.list_amount').blur(function() {
timer = setTimeout(function() {
current.children(".mod_units").fadeOut(300);
current.children(".static_units").fadeIn(300);
}, 500);
if (current.is(':hover')) clearTimeout(timer);
});
}
else {
timer = setTimeout(function() {
current.children(".mod_units").fadeOut(300);
current.children(".static_units").fadeIn(300);
}, 500);
}
});
素晴らしい、ありがとうございました!あなたの例はかなりうまくいきませんでした。なぜなら、オフホーファー機能の$は私が期待していた要素を選択していなかったからですが、ここで要素に置き換えることで修正しました:http://jsfiddle.net/VjHcr/4/ 私が以前持っていた.blur関数も追加しました。入力ボックスの1つが選択されているとフェードしないようにしたい。再度、感謝します! – Lou
ようこそ。ああ、大丈夫。 – SoWeLie