2011-11-13 2 views
1

패널이 표시되는 경우에만, 외부 요소의 클릭에 폐쇄 현재 왼쪽에있는 "연락처"버튼을 클릭하면 현재 열려 있고 사용자는 패널 외부를 클릭하거나 "#content"영역에서 esc 키를 친다.jQuery를 패널을 전환은이 사이트에서 일하고 있어요

#content 영역에서 클릭이 트리거보다 쉬울 것이라고 생각 했으므로 시작했습니다.

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

이것은 접촉 버튼의 기능을 파괴하고 : 나는 요소를 볼 수있는 경우에만 기능을 트리거에 몇 스레드를 읽었습니다,하지만 내가 지금까지 가지고 올 한 것은 전혀 작동하지 않습니다 나는 이것의 몇몇 변이를 소용 없게 시도했다. 내가 여기서 눈부신 실수를하고 있는가? 모든 조언을 크게 주시면 감사하겠습니다.

감사합니다.

답변

4

바인딩 Click 및 문서에 Keydown 기능과 패널 또는 플립 버튼을 클릭 할 때 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

헤이 멀린, 친구에게이 사이트를 보냈는데이 사이트를 코딩 중이며 연락처 키 옆에있는 "친구를 추천하십시오"링크를 클릭하면 나타나는 escal 키도 닫습니다. 모달 윈도우 닫기를 처리하는 코드는 http://dev.rjlacount.com/treinaAronson/js/javascript.js의 82 행에서 시작됩니다. 이전 문제에 대해 작성한 코드에이 코드를 통합하는 방법을 알지 못했습니다. 내가 여기 좀 도와 줄 수 있니? 나는 정말로 감사 할 것입니다. –

+0

확실하면 $ ("# refer-friend")를 추가하십시오 .fadeOut ("3000"); 위의 keydown 함수의 if 문 내에서. 그 트릭을해야합니다 – Marlin

1

패널을 열 때 페이지 본문에 클래스를 추가하고 닫을 때 제거하지 않는 이유는 무엇입니까? 즉 만드는이 훨씬 더 간단 : 몸 '클래스'는 #content div에 자동으로 가까운 접촉에있는 모든 클릭의 클래스가

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

.

의미가 있습니까? 그런데 멋진 사이트를 찾고 있습니다.

+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"); 
    } 
}); 
관련 문제