2012-02-17 7 views
11

यदि मेरे पास एक div है तो मैंने एक क्लिक ईवेंट के लिए धन्यवाद दिखाया है - अगर कोई व्यक्ति div के बाहर कहीं भी क्लिक करता है या एएससी कुंजी हिट करता है तो इसे बंद करना आसान होता है?एसीसी कुंजी के साथ एक div छुपा, और बंद क्लिक करें? Jquery

+5

> 1K प्रतिनिधि के साथ आप की तुलना में बेहतर पता होना चाहिए इस तरह के एक प्रश्न पूछने के लिए - आपने क्या प्रयास किया है? –

+0

उन घटनाओं के लिए एक ईवेंट श्रोता बांधें और div को छुपाएं। देखें [तत्व के बाहर एक क्लिक का पता कैसे लगाएं?] (Http://stackoverflow.com/questions/152975/how-to-detect-a-click-outside-an-element) और [jQuery के साथ एस्केप कुंजी के लिए कौन सा कुंजीकोड ] (http://stackoverflow.com/questions/1160008/which-keycode-for-escape-key-with-jquery)। –

+0

मैं कोई जावास्क्रिप्ट विशेषज्ञ नहीं हूं, लेकिन इससे मदद मिलनी चाहिए: http://www.javascriptkit.com/jsref/eventkeyboardmouse.shtml। Esc के लिए keyPress पर प्रयोग करें। क्लिक करने के लिए, शीर्ष पर अपने div के साथ, एक पारदर्शी div या पूरे पृष्ठ को कवर करने वाला कुछ है। इस पारदर्शी वस्तु पर एक ऑनक्लिक होना चाहिए और वह क्लिक समापन क्लिक होगा। –

उत्तर

45

ये रहा ...

$(document).on('click', function (e) { 
    if ($(e.target).closest(elem).length === 0) { 
     $(elem).hide(); 
    } 
}); 

$(document).on('keydown', function (e) { 
    if (e.keyCode === 27) { // ESC 
     $(elem).hide(); 
    } 
}); 

लाइव डेमो:http://jsfiddle.net/S5ftb/

+0

सही धन्यवाद! – Elliot

+0

अगर एएमएम में एक से अधिक वर्ग है तो यह काम नहीं कर रहा है, लेकिन अगर मैं सीधे 2 कक्षा के साथ elem को प्रतिस्थापित करता हूं तो काम करता है? – MIke

+0

@MIke आप 'elem' कैसे असाइन करते हैं? जांचें कि यह वास्तव में आपके तत्व का संदर्भ है या नहीं। –

9

आप में से जो लोग वेनिला पसंद करते हैं के लिए:

<div id="div">Click me dude</div> 

<script> 
    d = document.getElementById("div"); 
    d.addEventListener("click",  function(e){e.stopPropagation()},true); 
    addEventListener("click",  function() {d.style.display="none"},false); 
    addEventListener("keypress", function(e){e.keyCode==27 &&(d.style.display="none")},false); 
</script> 
+1

तत्व केवल तभी छुपाया जाना चाहिए जब तत्व तत्व के बाहर * बाहर * होता है ... –

+0

यिक्स, अच्छी पकड़; मैं संशोधित करूंगा। –

+0

गैर-jquery समाधान के लिए धन्यवाद! – Philipp

संबंधित मुद्दे