2013-03-11 2 views
0

내 모달 창이 표시되면 #screen을 클릭하거나 #loading_modal에서이 div를 숨길 필요가 있지만 어떻게 할 수 있으며 올바르게 작성하는 방법 내 코드가 작동하지 않습니다,하지만 또한 두 개의 개체 (# screen, #loading_modal) .... 동일한 있어요. js, 리팩토링하는 방법을이 코드를 새롭게 및 제대로 작동하게 ...?Jquery 보이는 요소 중 하나를 클릭하십시오 처리기

$("#screen").click(function() {  
    if ($('#screen').is(':visible')) { 
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    } 
}); 
$("#loading_modal").click(function() {  
    if ($('#screen').is(':visible')) { 
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    } 
}); 

답변

1

여기 if 문에 대한 필요가 없습니다, 당신은 간단하게 사용할 수 있습니다 내가 제대로 이해 한 경우

if ($('#screen').is(':visible')) { 
    $("#screen").click(function() {  
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    }); 
    $("#loading_modal").click(function() {  
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    }); 
    } 
1

나는 당신과 같이 클릭 핸들러 내부 가시성 검사를 넣을 필요가 있다고 생각 :

$('element:visible').click(function() { ... }) 

그래서 :

$("#screen:visible").click(function() {  
    $(this).hide(); 
    $('#loading_modal').hide(); 
}); 
$("#loading_modal:visible").click(function() {  
    $('#screen').hide(); 
    $(this).hide(); 
}); 
,

기능이 동일한 작업을 수행하려는 경우, 당신은 단순히 사용할 수 있습니다 : 당신이 잘못하고있다

$("#screen:visible, #loading_modal:visible").click(function() {  
    $('#screen').hide(); 
    $('#loading_modal').hide(); 
}); 
+0

'.is (': visible') 체크가 필요 없으므로 간단히'$ ("# screen : visible") click()'할 수 있습니다. :-) –

1

. 클릭 이벤트에서 조건을 확인할 수 있습니다. 클릭 이벤트가 발생하면 측면에서 당신은 그냥 동적으로 만들어지는 경우가

볼 수 있는지 확인할 필요가 없으며이

$("#screen,#loading_modal").click(function() { 
     $('#screen,#loading_modal').hide();  
}); 

처럼 보이도록 코드를 리팩토링 할 수

$("#screen").click(function() {  
    if ($('#screen').is(':visible')) { 
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    } 
}); 
$("#loading_modal").click(function() {  
    if ($('#screen').is(':visible')) { 
     $('#screen').hide(); 
     $('#loading_modal').hide(); 
    } 
}); 
1

클릭 이벤트 처리기를 if 실행 조건을 넣어 요소를 만든 후에 위임하거나 바인딩해야합니다.

$('body').on('click',"#screen,#loading_modal",function() { 
     $('#screen,#loading_modal').hide();  
}); 
+0

모든 시간이 보이지 않는 경우 .... – brabertaser19

+0

@ brabertaser1992 보이지 않는 경우 어차피이를 클릭 할 수 없습니다. 그래서 가시성을 확인하는 이유가 없습니다. –

+0

@wirey가 말하는 것은 요소가 보이지 않으면 사용자가 아무 것도 클릭 할 수 없습니다. 혹시 확실하지 않다면'.hide()'는 CSS의'display' 속성을'none'으로 설정합니다 ** **'hidden'에 대한'visibility'는 아닙니다. 'display : none; '과 함께 그들은 페이지에 전혀 나타나지 않을 것입니다. 가시성을 확인해야 할 필요가있는 경우 아래에서 내 대답을 확인하십시오. –

관련 문제