मैं वह व्यक्ति था जिसने 2006 में इस सम्मेलन की शुरुआत की थी और इसे जल्दी jQuery की मेलिंग सूची में बढ़ावा दिया था, इसलिए मुझे इसके बारे में कुछ इतिहास और प्रेरणा साझा करने दें।
स्वीकृत उत्तर यह उदाहरण देता है:
var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself
लेकिन यह वास्तव में यह अच्छी तरह से वर्णन नहीं करता है। इसके बिना भी $
, हमारे पास अभी भी दो भिन्न चर नाम होंगे, email
और email_field
। वहीं बहुत अच्छा है। $
जब हम पहले से ही दो अलग-अलग नामों से हैं, तो हमें नामों में से एक में फेंकने की आवश्यकता क्यों होगी ?
वास्तव में, मैंने email_field
दो कारणों से यहां उपयोग नहीं किया होगा : names_with_underscores
मुहावरेदार जावास्क्रिप्ट नहीं हैं, और field
वास्तव में डोम तत्व के लिए कोई मतलब नहीं है। लेकिन मैंने उसी विचार का पालन किया।
मैंने कुछ अलग चीजों की कोशिश की, उनमें से बहुत कुछ उदाहरण के समान है:
var email = $("#email"), emailElement = $("#email")[0];
// Now email is a jQuery object and emailElement is the first/only DOM element in it
(बेशक एक jQuery ऑब्जेक्ट में एक से अधिक DOM तत्व हो सकते हैं, लेकिन मैं जिस कोड पर काम कर रहा था, उसमें बहुत सारे id
चयनकर्ता थे, इसलिए उन मामलों में 1: 1 पत्राचार था।)
मेरे पास एक और मामला था जहां एक फ़ंक्शन को एक पैरामीटर के रूप में एक डोम तत्व प्राप्त हुआ और इसके लिए एक jQuery ऑब्जेक्ट की भी आवश्यकता थी:
// email is a DOM element passed into this function
function doSomethingWithEmail( email ) {
var emailJQ = $(email);
// Now email is the DOM element and emailJQ is a jQuery object for it
}
वैसे यह थोड़ा भ्रमित करने वाला है! मेरे कोड के एक बिट में, email
jQuery ऑब्जेक्ट है और emailElement
DOM तत्व है, लेकिन दूसरे में, email
DOM तत्व है और emailJQ
jQuery ऑब्जेक्ट है।
कोई संगति नहीं थी और मैं उन्हें मिलाता रहा। प्लस यह एक उपद्रव का एक सा था कि एक ही चीज़ के लिए दो अलग-अलग नाम रखने के लिए: एक jQuery ऑब्जेक्ट के लिए और दूसरा मिलान DOM तत्व के लिए। इसके अलावा email
, emailElement
और emailJQ
, मैं अन्य विविधताओं को भी आजमाता रहा।
फिर मैंने एक सामान्य पैटर्न पर ध्यान दिया:
var email = $("#email");
var emailJQ = $(email);
चूंकि जावास्क्रिप्ट $
नामों के लिए केवल एक और पत्र के रूप में व्यवहार करती है , और जब से मुझे हमेशा एक $(whatever)
कॉल से एक jQuery ऑब्जेक्ट मिला है , पैटर्न ने आखिरकार मेरे लिए dawned किया। मैं एक $(...)
कॉल कर सकता था और कुछ पात्रों को हटा सकता था, और यह एक बहुत अच्छा नाम था:
$("#email")
$(email)
स्ट्राइकआउट एकदम सही नहीं है, लेकिन आपको यह विचार मिल सकता है: हटाए गए कुछ वर्णों के साथ, उन दोनों पंक्तियों के अंत की तरह दिख रहा है:
$email
यही कारण है कि जब मुझे एहसास हुआ कि मुझे एक सम्मेलन की तरह बनाने की जरूरत नहीं है emailElement
या emailJQ
। पहले से ही एक अच्छा सम्मेलन था जो मुझे घूर रहा था: कुछ पात्रों को $(whatever)
कॉल से बाहर निकालें और यह बदल गया $whatever
।
var $email = $("#email"), email = $email[0];
// $email is the jQuery object and email is the DOM object
तथा:
// email is a DOM element passed into this function
function doSomethingWithEmail( email ) {
var $email = $(email);
// $email is the jQuery object and email is the DOM object
// Same names as in the code above. Yay!
}
इसलिए मुझे हर समय दो अलग-अलग नाम नहीं बनाने पड़ते, लेकिन $
उपसर्ग के साथ या उसके बिना एक ही नाम का उपयोग कर सकते थे । और $
उपसर्ग एक अच्छा अनुस्मारक था जिसे मैं एक jQuery ऑब्जेक्ट के साथ काम कर रहा था:
$('#email').click( ... );
या:
var $email = $('#email');
// Maybe do some other stuff with $email here
$email.click( ... );