2011-01-07 10 views
0

私は非常にjqueryとコードで新しいです、ここで私は、.mouseoutイベント内にするために、setTimeoutイベントを取得しようとしていますが、私はエディタで構文エラーを取得し続けるように、 。ここで私が持っているものです。jquery小さなエラー

 
jQuery(document).ready(function() { 
    $('.slidedown').hide(); 
    $('.trigger').hover(function(){ // enter animation 

    $('.slidedown').stop(true,true).animate({ 
     height: ['toggle', 'swing'], 
     }, 600, function() { /* animation done */ }); 

    }, function(){ // leave animation 


$('.slidedown').mouseout() 
    setTimeout(function(){ 
     $('.slidedown').stop(true,true).animate({ 
     height: '0px', 
     }, 600, function() { /* animation done */ }); 
    }, 1000); 

    }); 
}); 

小さなニュアンスは、このコードではdiv要素の上にマウスを置いたユーザは、その後、別のdivは、それが滑り落ちる怒鳴ります。 .slidedown divにマウスを移動すると、マウスが削除されるまで開いたままにしておく必要があります。しかし、このコードは.triggerの後に.slidedownにマウスを乗せずに.triggerから別のページ領域にマウスを直接移動させると、.slidedown divを折りたたむでしょうか?私は、ある種の 'setTimeout'を必要とします。これは、ユーザが.trigger上にマウスを乗せた後にマウスを.slideownに移動しない場合にのみトリガされます。私は理にかなっていると思う。ご協力いただきありがとうございます!

+2

**オフトピック**、しかしそれらの抱擁コンマあなたの 'height:'行の後ろのようなものです)、IE7以前は、それらを脅かすでしょう:http://blog.niftysnippets.org/2010/09/literal-improvement.html –

+1

オフトピック: 'mouseoutあなたがあなたの子供の上を移動するときに親要素を起動します(気泡のため)。代わりに、IE特有ですが、jQueryでエミュレートされる 'mouseleave'を考えるかもしれません(例:安全に使うため)。http: /api.jquery.com/mouseleave/ –

+0

@Crowderは、オブジェクトリテラルの最後のプロパティがIE7以下をチョークした後に、ダングリングカンマです。 – Arnab

答えて

1

この行は、それが

$('.slidedown').mouseout(YOUR_CALLBACK_FUNCTION) 

ことshoule問題

$('.slidedown').mouseout() 

であるあなたは、イベントハンドラとして機能し、そのイベントハンドラ内で使用すると、(のsetTimeoutを呼び出すことができるコールバック関数を渡す必要があります)あなたのやり方。

だから、正しいコードは、この

$('.slidedown').mouseout(function() { 
    setTimeout(function(){ 
     $('.slidedown').stop(true,true).animate({ 
      height: '0px', 
     }, 
     600, 
     function() { /* animation done */ } 
    ); // animate ends here 
    }, 1000); // setTimeout ends here 
}); // mouseout ends here 
+0

すばやく返事をいただきありがとうございます。 }、1000);ライン。 – HeinekenBluess

+0

@ハイネケン:**何のエラーが投げますか?構文は正常に見えます(IE7以前を使用していない場合は、私のコメントを参照してください)。私はそれがあなたの質問にあなたが何を記述するかはわかりませんが、Arnabが拾った構文エラーを修正するようです。 –

+0

エディタのスクリーンショットをご覧ください:http://img153.imageshack.us/img153/7819/82514978.png、コード全体:http://img189.imageshack.us/img189/853/86562691.png – HeinekenBluess

0

おかげTJとArnab、この作品のようになります。

$(document).ready(function() { 
    $('.slidedown').hide(); 
    $('.trigger').hover(function(){ // enter animation 

    $('.slidedown').stop(true,true).animate({ 
     height: ['toggle', 'swing'], 
     }, 600, function() { /* animation done */ }); 

    }, function(){ // leave animation 

$('.slidedown').mouseout(function() { 
    setTimeout(function(){ 
     $('.slidedown').stop(true,true).animate({ 
      height: '0px', 
     }, 
     600, 
     function() { /* animation done */ } 
    ); // animate ends here 
    }, 1000); // setTimeout ends here 
}); // mouseout ends here 
    }); 
});

しかし、私は離れて、その後.triggerの上にマウスを移動について言及したが、他の事(スライダへの書き込みはできません)が機能しません。 。スライドは開いたままです。 :) :(私はマウスの1つの宛先のための '許可'ルールの種類を持っている.mouseoutイベントを取得することは非常に複雑だと思う。

+0

".mouseover () "は、カーソルが親から子へ、またはその逆に移動すると、mouseoverイベントが繰り返し鳴ります。" .hover() "は内部的に" mouseenter "と" mouseleave "をIEと他のブラウザの委譲で使用します。 – Arnab

+0

重要なのはあなたのHTML構造がここで重要なのですが、私は推測しかできません。できるだけhttp://www.jsfiddle.net/からバイリンガルを投稿してみてください。 – Arnab

+0

ねえ、 http://jsfiddle.net/KSudv/私は既に.hoverを使用しています、あなたが.moを置き換えることを意味しない限り.hoverと一緒に使う?あなたがフィドルで見ることができるように、それは繰り返されません(私はそれを必要とします)そしてどこでも引き金を引いて動いていますが、滑り台は滑り台を開放します: ' – HeinekenBluess

関連する問題