আমি সেই ব্যক্তি যিনি 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
(অবশ্যই কোনও জিকুয়েরি অবজেক্টে একাধিক ডিওএম উপাদান থাকতে পারে, তবে আমি যে কোডটিতে কাজ করছিলাম তাতে প্রচুর id
নির্বাচক ছিল, সুতরাং সেই ক্ষেত্রে একটি 1: 1 চিঠিপত্র ছিল।)
আমার আরও একটি মামলা রয়েছে যেখানে একটি ফাংশন প্যারামিটার হিসাবে একটি ডিওএম উপাদান পেয়েছিল এবং এর জন্য একটি জিকুয়েরি আইটেমের প্রয়োজন ছিল:
// 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 অবজেক্ট।
কোনও ধারাবাহিকতা ছিল না এবং আমি তাদের মেশাতে থাকি। এছাড়াও একই জিনিসটির জন্য দুটি পৃথক নাম তৈরি করতে রাখা কিছুটা উপদ্রব ছিল: একটি জিকুয়েরি অবজেক্টের জন্য এবং অন্যটি মিলে যাওয়া ডোম উপাদানটির জন্য। এছাড়াও email
, emailElement
এবং, এবং emailJQ
আমি অন্যান্য বৈচিত্রগুলিও চেষ্টা করে চলেছি।
তারপরে আমি একটি সাধারণ প্যাটার্নটি লক্ষ্য করেছি:
var email = $("#email");
var emailJQ = $(email);
যেহেতু জাভাস্ক্রিপ্ট $
নামগুলির জন্য অন্য একটি চিঠি হিসাবে বিবেচনা করে এবং যেহেতু আমি সবসময় কোনও $(whatever)
কল থেকে কোনও jQuery অবজেক্ট পেয়েছি , অবশেষে আমার উপর এই প্যাটার্নটি ছড়িয়ে পড়ে। আমি একটি $(...)
কল নিতে পারি এবং কিছু অক্ষর সরিয়ে ফেলতে পারি এবং এটি একটি সুন্দর সুন্দর নাম সহ উঠে আসে:
$("#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( ... );