2011-03-07 22 views
10

सवाल बसशरीर पर बाध्य करने से बेहतर दस्तावेज करने के लिए एक क्लिक ईवेंट बाध्यकारी है?

$("body").click(function(e){}); के बीच बनाम $(document).click(function(e){});

जो अधिक कुशल या सलाह दी जाती है है? या यह स्थिति पर निर्भर करता है?

ईमानदारी से मैंने दोनों को एक दूसरे के रूप में उपयोग किया है और जब तक मैं उत्सुक नहीं हो जाता तब तक कोई अंतर नहीं देखा है और इस सवाल से पूछा।

उत्तर

22

यदि पृष्ठ की ऊंचाई व्यूपोर्ट ऊंचाई से छोटी है, तो पृष्ठ के नीचे व्यूपोर्ट पर क्लिक करने से 'body' ट्रिगर नहीं होगा, लेकिन केवल document हैंडलर पर क्लिक करें।

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

डेमो में, पाठ के नीचे वाले हिस्से पर क्लिक करने की कोशिश, और आप यह है कि केवल document क्लिक हैंडलर कार्यान्वित देखेंगे।

इसलिए, हैंडलर को दस्तावेज़ ऑब्जेक्ट में बांधना बेहतर है।

+0

+1। बहुत बढ़िया। –

+0

बहुत ही जानकारीपूर्ण और सहज उत्तर के लिए धन्यवाद – lock

+0

हाय, कृपया इसे देखें http: // jsfiddle.net/ZVgDC/11/', यह केवल क्रोम पर काम करता है, मैंने इसे फ़ायरफ़ॉक्स 15.0.1, और IE पर आज़माया है, यह है उन पर काम नहीं कर रहा .. कृपया मुझे एक समाधान प्राप्त करें। >> मेरी आवश्यकता है, दस्तावेज़ में श्रोता जोड़ें, और जब मैं किसी ऑब्जेक्ट पर किसी अन्य ऑब्जेक्ट पर क्लिक करता हूं तो मैं div को छिपाना चाहता हूं .. तो अगर ऊपर की बात काम करती है सभी ब्राउज़र, मेरी समस्या हल हो जाएगी। कृपया इसे देखें @ Šime Vidas – Patriks

3

इसे document पर बाध्यकारी मानक अभ्यास प्रतीत होता है, इसलिए मैं इसके साथ रहूंगा।

document भी much faster है।

+2

+1 एक दस्तावेजीकरण स्पष्टीकरण के लिए क्यों इसकी तेज – lock

+0

@alex यह दस्तावेज बनाम दस्तावेज की तुलना करने का एक सटीक तरीका है। ''() 'ईवेंट प्रतिनिधिमंडल का उपयोग करके? http://jsperf.com/jquery-document-vs-document-body-on-event-delegation क्योंकि अगर मैं 'body' बनाम 'document.body' का उपयोग करता हूं तो मुझे अलग-अलग परिणाम मिल रहे हैं। –

+0

@alex मैंने दस्तावेज़ सोचा था। नोड के करीब होने के बाद से तेज़ होगा लेकिन यह मामला प्रतीत नहीं होता है, क्या आप समझा सकते हैं? –

3

मैं कहूंगा कि दस्तावेज़ में ईवेंट को बाध्य करना बेहतर है क्योंकि कुछ ब्राउज़रों में कुछ मामलों में बॉडी गायब हो सकती है।

+0

मैं दस्तावेज़ में बाध्यकारी ईवेंट हैंडलर पसंद करता हूं क्योंकि दस्तावेज़ तैयार होने से पहले आप इसे कर सकते हैं, मैं जितना कर सकता हूं उतना आगे करना चाहता हूं। यह एकल पृष्ठ ऐप्स में भी विशेष रूप से अच्छा है, जहां शरीर को पूरी तरह से बदला जा सकता है। डेमो के लिए – dkubb

0

मैं इसे डीओएम में किसी और चीज के समान व्यवहार करता हूं।

यदि मैं <table> से बांधता हूं तो यह <tr> की तुलना में उच्च स्तर पर है। अगर मैं <tr> से बांधता हूं तो यह <table> से कम है। यह दस्तावेज (उच्च) और <body> (निचला) के लिए मेरी राय में एक स्तर मुद्दा के लिए एक ही तरीके से काम करता है।

तो यदि आप यह सुनिश्चित करना चाहते हैं कि आप क्लिक ईवेंट को उच्चतम तत्व पर बाध्य कर रहे हैं तो दस्तावेज़ से जुड़ें।

2

इसके अलावा शरीर पूरी दृश्य खिड़की को कवर नहीं कर सकता है (कुछ पागल शैलियों का कारण बनता है)! मुझे नहीं पता कि क्या आपको अभी भी इस मामले में क्लिक इवेंट मिलेगा। तो बेहतर इसे document पर बांधें।

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

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