2011-11-13 6 views
1

パネルが表示されている場合にのみ、外部の要素のクリックで閉じ左上の「連絡先」ボタンをクリックします)、現在開いていてユーザーがパネルの外側をクリックするか(「#content」エリア内)、Escキーを押します。jQueryのパネルを切り替えますが、私はこのサイトに取り組んでいます

私は#contentエリアトリガーでクリックすると、両者の容易になるだろう考え出したので、私はそれで始めました。私の要素が表示されている場合にのみ機能のトリガーのカップルのスレッドを読んだが、私がこれまでに作ってみたが、全く機能していません。

$("#panel").is(":visible") { 
    $("#content").click(function(){ 
    $("#panel").slideToggle("3000"); 
    }); 
}; 

これは、接触ボタンの機能を壊して、私はこれのいくつかのバリエーションを無駄にしようとしました。私はここで眩しいエラーをしていますか?アドバイスをいただければ幸いです。

ありがとうございます!

答えて

4

バインドClickKeydown機能とあなたパネルやフリップボタンがクリックされたときにclick機能は、文書まで泡がないことを確認してください。応答のための

$(document).bind({ 
    keydown:function(e) { 
     if (e.keyCode == 27) { 
      $("#panel").slideUp("3000"); 
     } 
    }, click: function(e) { 
     $("#panel").slideUp("3000"); 
    } 
}); 
$('#flip, #panel').bind('click', function(e){return false}); 
+0

驚くべきことに、これは私の問題の両方を解決し、私はいくつかの新しいものを学びました。どうもありがとうございます! –

+0

マーリンねえ、私は私がこのサイトをコーディングしていますこれを友人に送信され、彼はあなたが接触パネルの隣に「友人を参照してください」リンクをクリックした場合は、ESCキーでもポップアップするモーダルウィンドウを閉じて要請しました。モーダルウィンドウの終了を処理するコードは、http://dev.rjlacount.com/treinaAronson/js/javascript.jsの82行目から始まります。これまでの問題のために書いたコードにどのように統合するのか分かりませんでした。私はここで何か助けを得ることができますか?私は本当にそれを感謝します。 –

+0

確かに、$( "#refer-friend")を追加してください。fadeOut( "3000");上記のkeydown関数のifステートメントの中で。それはトリックを行う必要があります – Marlin

1

なぜあなたはパネルが開かれたときにページのボディにクラスを追加し、それが閉じていたときに、それを削除しませんか?それは、これは非常に簡単になります:

$('.class #content').click(function(){ 
// Close the contact panel 
}); 

今、体は、#content divの自動的密着上の任意のクリックを「クラス」のクラスを持っている場合。

意味がありますか?ちなみに素晴らしい探しているサイト。文書へ

+0

感謝;:そうのようにマーリンの返信は今回私の問題を両方解決しましたが、これは完全に意味があり、将来私はおそらくそれを使用します。 –

0
$('#flip').bind('click', function(){ 
    $(this).toggleClass('contactOpen'); 
    $("#panel").slideToggle("3000"); 
}); 

$('#content').bind('click', function(){ 
    if($('#flip').hasClass('contactOpen')){ 
     $(this).toggleClass('contactOpen'); 
     $("#panel").slideToggle("3000"); 
    } 
}); 
関連する問題