इस साइट पर अब सबसे लोगों तक शायद पता है कि कर रहे हैं:क्यों जावास्क्रिप्ट घटना प्रतिनिधिमंडल चरम पर नहीं लेते?
$("#someTable TD.foo").click(function(){
$(e.target).doSomething();
});
जा रहा है प्रदर्शन करने के लिए ज्यादा बदतर:
$("#someTable").click(function(){
if (!$(e.target).is("TD.foo")) return;
$(e.target).doSomething();
});
अब कैसे निश्चित रूप से भी बदतर है कि कितने TDs अपनी मेज पर निर्भर है, लेकिन इस सामान्य सिद्धांत को तब तक लागू होना चाहिए जब तक आपके पास कम से कम कुछ टीडी हों। (नोट: बेशक स्मार्ट चीज उपर्युक्त के बजाय jQuery प्रतिनिधि का उपयोग करना होगा, लेकिन मैं बस एक स्पष्ट भेदभाव के साथ एक उदाहरण बनाने की कोशिश कर रहा था)।
किसी भी तरह, मैंने इस सिद्धांत को एक सहकर्मी को समझाया, और उनकी प्रतिक्रिया "अच्छी तरह से, साइट-व्यापी घटकों (उदाहरण के लिए एक तिथि लेने वाला इनपुट) क्यों रुकती है? क्यों न केवल प्रत्येक प्रकार के लिए एक हैंडलर बांधें शरीर के लिए घटक का? " मेरे पास कोई अच्छा जवाब नहीं था।
स्पष्ट रूप से प्रतिनिधिमंडल रणनीति का उपयोग करना मतलब है कि आप घटनाओं को कैसे अवरुद्ध करते हैं, इसलिए यह एक नकारात्मक है। साथ ही, आप hypothetically एक पृष्ठ हो सकता है जहां आपके पास "TD.foo" है जो पर कोई ईवेंट संलग्न नहीं होना चाहिए। लेकिन, यदि आप समझते हैं और ईवेंट बुलबुले परिवर्तन के आसपास काम करने के इच्छुक हैं, और यदि आप "टीडी पर .foo डालते हैं, तो यह नीति को लागू करता है, यह हमेशा ईवेंट को हुक अप करने जा रहा है", इनमें से कोई भी ऐसा नहीं लगता है बड़ी बात।
मुझे लगता है कि मुझे कुछ याद आना चाहिए, इसलिए मेरा सवाल यह है कि: बॉडी में सभी साइट-व्यापी घटकों के लिए सभी घटनाओं को प्रस्तुत करने के लिए कोई अन्य नकारात्मक पक्ष है (जैसा कि उन्हें सीधे शामिल HTML तत्वों में बाध्य करने का विरोध किया गया है , या उन्हें एक गैर-बॉडी पैरेंट तत्व में प्रतिनिधि)?
मेरा मानना है कि यह प्राथमिकता का मामला है और एक मामला-दर-मामला परिदृश्य है । मेरा मतलब यह है कि आपको पहले जितना संभव हो सके पठनीय होने के लिए कोड लिखना चाहिए। इस तरह आप या कोई और बाद में कोड में आ सकता है और उसके बाद कोड का परीक्षण कर सकता है। एक बार ऐसा करने के बाद आप यह देखने के लिए जांच सकते हैं कि कोड अच्छी तरह से प्रदर्शन करता है और इसे आवश्यकतानुसार अनुकूलित करता है। आपके विशिष्ट परिदृश्य में, $ ("someTable TD.foo") उसमें वापसी के साथ परिदृश्य की तुलना में पढ़ने, प्रबंधित करने और अनुसरण करना आसान है। कोई अन्य कोड पढ़ सकता है और गलत व्याख्या कर सकता है, जिससे वे अपने परिवर्तनों के साथ गलतियों को पेश कर सकते हैं। बस मेरी राय – evasilchenko
मैं पूर्ण और कुल समझौते में हूं: डेवलपर्स को ऑप्टिमाइज़ेशन के बारे में चिंता किए बिना पहले डिजाइन करना चाहिए, और केवल बाद में उपयुक्त के रूप में अनुकूलित करना चाहिए। हालांकि, यह पूरी चीज एक वास्तविक डिजाइन को अनुकूलित करने के लिए वास्तविक जीवन की आवश्यकता से बाहर आई थी (हमारे पास एक अच्छा पृष्ठ था जब तक कि हमारे ग्राहकों ने हजारों और हजारों पंक्तियों के साथ इसका उपयोग करने का फैसला नहीं किया), इसलिए हम सबसे अच्छी रणनीति के साथ आने की कोशिश कर रहे थे उस अनुकूलन को संभालने के लिए। – machineghost
संभावित डुप्लिकेट [क्या सभी jquery घटनाओं को $ (दस्तावेज़) तक बाध्य होना चाहिए?] (Http://stackoverflow.com/q/12824549/1048572) – Bergi