2012-10-04 17 views
31

संभव डुप्लिकेट:
How to detect a click outside an element?jQuery: क्लिक पर तत्व कहीं और तत्व के अलावा छुपाएं

मैं प्राप्त करने के लिए है कि एक 'div' खाल उपयोगकर्ता को छोड़कर कहीं भी क्लिक करता है तो कोशिश कर रहा हूँ तत्व पर यदि उपयोगकर्ता एक बटन पर क्लिक करता है तो मुझे निम्नलिखित कोड टॉगल() कर रहा है। मैं चाहता हूं कि बटन 'प्लस' तत्व दिखाई दे, प्लस रहने के लिए क्लिक करें, स्क्रीन के अन्य हिस्सों पर प्रतिक्रिया करता है।

$('.nav-toggle').click(function(){ 
     //get collapse content selector 
     var collapse_content_selector = $(this).attr('href'); 

     //make the collapse content to be shown or hide 
     var toggle_switch = $(this); 
     $(collapse_content_selector).toggle(function(){ 
      if($(this).css('display')=='none'){ 
          //change the button label to be 'Show' 
      toggle_switch.html('Show Details'); 
      }else{ 
          //change the button label to be 'Hide' 
      toggle_switch.html('Hide Details'); 
      } 
     }); 
    }); 
+0

मैं शायद अपने आप को अच्छी तरह से नहीं समझा था। इस पहेली को देखें http://jsfiddle.net/planxdesign/b9mLB/1/ यह कोड है जैसा कि मुझे इस समय मिला है, मैं उपयोगकर्ता क्लिक के मामले में # विवरण-विंडो को छिपाना चाहता हूं नेविगेशन तीरों के अलावा "छुपा विवरण" या/और कहीं और। – crs1138

उत्तर

21

आप event delegation की अवधारणा का सहारा ले सकते हैं।

$(function() { 
    $(document).on('click', function(e) { 
     if (e.target.id === 'div1') { 
      alert('Div Clicked !!'); 
     } else { 
      $('#div1').hide(); 
     } 

    }) 
});​ 

चेक FIDDLE

मैं समझ में नहीं आया कि आप अन्य भाग के साथ एकीकृत करके क्या मतलब .. इस मूल विचार है ..

+0

देखें मैं विभिन्न कारणों से टॉगल पर रहना चाहता हूं। टॉगल() का उपयोग करते समय # विवरण-विंडो के अलावा कहीं भी क्लिक को कार्यान्वित करने का कोई तरीका है? मेरी बेवकूफ देखें - http://jsfiddle.net/planxdesign/b9mLB/1/ – crs1138

+0

यह दृष्टिकोण काम करेगा, लेकिन div को छुपाए जाने के बाद आपको क्लिक ईवेंट को बंद करने की आवश्यकता होगी '$ (दस्तावेज़) .off (" क्लिक करें ")'। –

+0

@DanielBarde। एक बार div छुपाए जाने के बाद ईवेंट बाध्यकारी क्यों हटाएगा .. –

3

आप jQuery .blur() समारोह जब अन्य तत्व पर उपयोगकर्ता क्लिक एक div को छिपाने के लिए उपयोग कर सकते हैं (लिंक, boutton की तरह, whathever ..)

कलंक घटना आग है जब एक तत्व फोकस खो है (उपयोगकर्ता डीओएम पेड़ पर एक और तत्व का चयन करें)

मुझे आपके टॉगल के साथ लिंक समझ में नहीं आता है। यदि आपका टॉगल बटन DIV का प्रबंधन करता है, तो टॉगल फ़ंक्शन के अंदर आपको बटन पर टेक्स्ट को अपडेट करने के साथ ही div पर hide()/show() रखना चाहिए।

+0

टॉगल एक यूआई प्रभाव है - http://docs.jquery.com/UI/Effects/toggle – crs1138

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