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
DOM මූලද්රව්යයක් සඳහා සැබවින්ම තේරුමක් නැත. නමුත් මම එම අදහසම අනුගමනය කළෙමි.
මම වෙනස් දේවල් කිහිපයක් උත්සාහ කළෙමි, ඒවා අතර ආදර්ශයට බෙහෙවින් සමාන ය:
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 ලිපි හුවමාරුවක් තිබුණි.)
ශ්රිතයකට පරාමිතියක් ලෙස DOM මූලද්රව්යයක් ලැබුණු අතර ඒ සඳහා 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 වස්තුවක් ලැබුණු නිසාත් , රටාව අවසානයේ මා වෙත පැමිණියේය. මට $(...)
ඇමතුමක් ලබාගෙන අක්ෂර කිහිපයක් ඉවත් කළ හැකි අතර , එය ලස්සන නමක් සමඟ පැමිණෙනු ඇත:
$("#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( ... );