jQuery में $(this)
और this
के बीच क्या अंतर है, और वे कभी-कभी एक ही परिणाम क्यों देते हैं और अन्य बार अलग-अलग व्यवहार करते हैं?
उत्तर
$(this)
jQuery कार्यक्षमता के साथ this
लपेटें।
उदाहरण के लिए, इस कोड को विफल हो जाएगा:
$('.someDiv').onClick(function(){
// this refers to the DOM element so the following line would fail
this.fadeOut(100);
});
तो हम jQuery में this
लपेट:
$('.someDiv').onClick(function(){
// wrap this in jQuery so we can use jQuery fadeOut
$(this).fadeOut(100);
});
अगर this
एक jQuery वस्तु नहीं है, तो आप कर सकते हैं यह $()
के आसपास लपेटकर एक jQuery तत्व है। जब आपका तत्व पहले से ही jQuery अभिव्यक्ति का परिणाम है, तो उस मामले में this
पहले से ही एक jQuery ऑब्जेक्ट है। तो उस मामले में वे दोनों समान रूप से
$(this)
jQuery कार्यों के साथ this
अंक को सजाने के लिए काम करता है। डीओएम तत्व (कहने के लिए, <div>
) संदर्भित करने के लिए सामान्य उपयोग केस this
के लिए है। फिर, $(this)
लिखने से आप <div>
पर सभी jQuery API फ़ंक्शन का उपयोग कर सकते हैं।
यदि this
पहले से ही एक jQuery ऑब्जेक्ट को संदर्भित करता है - आमतौर पर एक jQuery- सजाया गया DOM ऑब्जेक्ट - तो $(this)
पर कॉल करने से कोई प्रभाव नहीं पड़ेगा क्योंकि यह पहले ही सजाया गया है।
this
जब भी आप किसी ऑब्जेक्ट से जुड़े फ़ंक्शन के अंदर होते हैं तो जावास्क्रिप्ट चर बनाया जाता है। इन मामलों में, this
उस वस्तु को संदर्भित करता है।
$(this)
एक jQuery ऑब्जेक्ट देता है जिसे आप jQuery फ़ंक्शन पर कॉल कर सकते हैं, लेकिन केवल this
पर लागू होगा।
, अगर आप सभी लंगर के लिए एक क्लिक हैंडलर सेट:
$('a').click(function() {
console.log(this.href) ;
}) ;
तो this
, लंगर, जो क्लिक करें घटना (समारोह) से जुड़ा हुआ है को दर्शाता है।
आप एक छोटा सा बेहतर समझने के लिए, अपने आप को somekind जैसे गूगल क्रोम की एक डिबगर हो और ऐसा करने के ..
$('a').click(function(){
console.log(this); //DO
console.log($(this)); //JO
});
इस तुम्हें दिखाता हूँ कि क्या अंतर है :)
में जावास्क्रिप्ट यह हमेशा निष्पादित कार्य के "मालिक" को संदर्भित करता है। $ (यह) का उपयोग केवल मालिक को लपेटेगा ताकि सभी jQuery संचालन को बढ़ाया जा सके और इसके लिए उपलब्ध हो।
पर विचार करें:
$links = $('#content a');
$links.click(function() {
link = this;
$link = $(this); //jQuery wrapped object.
alert(link.getAttribute('href'));
alert($link.attr('href')); //we can use the attr() function from jQuery
});
वे आम तौर पर एक ही परिणाम दे के बाद से मालिक, एक ही है केवल यह है कि जब jQuery द्वारा लपेटा यह jQuery कार्यों के साथ काम कर सकते हैं।
$ (यह) == यह? दिलचस्प।
यह डॉम घटना द्वारा पारित नहीं होना चाहिए।
जब वे "* एक ही परिणाम देते हैं *" करते हैं? –