2012-11-14 3 views
0

모달 상자를 작성했습니다. 모덜 (moal) 상자를 만들었습니다. 모덜 (moal) 상자를 만들었습니다. 모덜 (moal) 상자를 사용하여 내용을 페이드 아웃하고 사용자가 상자를 클릭하여 닫을 수있게합니다. 나는 모든 클릭을 포착하여이를 수행하지만, 모델 상자 위에있는 모든 것을 필터링하여 제거합니다.일부 클릭 만 캡처하기 (일부 제외)

$('body').on('click', '.cover_slide > *',function(e){ 
    e.stopPropagation(); 
    }); 
    $('body').on('click', '.cover_slide',function(){ 
    helper.cover.close(); 
    $('body').off('click', '.cover_slide'); 
    }); 

나는 번의 클릭만으로 내 모달 상자에 일부 요소와 상호 작용할 수 있도록하고 싶습니다,하지만 난 그렇게 여전히 내 '폐쇄 해제 클릭'기능을하는 방법을 알아낼 수 없습니다. 현재 상자의 모든 클릭은 무시됩니다.

+0

페이드 아웃 배경 및 팝업 본체 자체에 대한 HTML은 무엇입니까? –

+0

"cover-all"div 배경의 클릭 만 감지하면 닫을 수 없습니까? – Archer

+0

아니요, 커버 배경의 div가 커버 아래에 있으므로 클릭 이벤트가 커버 슬레이드에 포함 된 모든 것에서 전파되지 않습니다. –

답변

1

클릭을 여러 번 바인딩 할 필요가 없습니다. 이 스 니펫을 사용해보십시오. 요소가 실제로 무엇인지에 따라 가장 가까운 선택기를 변경해야 할 수도 있습니다.

$(document).bind("click", function(e) { 
    if($(e.target).closest("div").hasClass('coverSlide')) { 
     //do stuff if someone clicks the box 
    } 
}); 
+0

혼란스러워. 이것은 덮개를 클릭 할 때 닫을 수 있습니까? 덮개에서 멀리 떨어지십시오. 자식 요소가 사라집니다. –

+0

예, this $ (e.target) .closest ("div"). hasClass ('coverSlide') 행은 클릭 한 coverSlide 요소 (또는 그 자식)의 여부를 감지합니다. – roacher

+0

그러나 그것들을 구분하지 않는 것처럼 보입니다. –

관련 문제