2011-12-12 20 views
11

संभव डुप्लिकेट:
jQuery $(this) vs this

के बीच "इस" और "$ (this)" क्या अंतर है?

मुझे कैसे पता चलेगा कि किस का उपयोग करना है?

संबंधित, मुझे लगता है:

प्रत्येक के साथ

, आप वैकल्पिक पैरामीटर की है। "मैं" "या" से अलग कैसे है (या "$ (यह)")?

$('img').each(function(i) { ....code } 

बनाम

$('img').each(function() { ....code } 
+0

प्रश्न समान है लेकिन थोड़ा अलग है, और सामान्य रूप से "यह" के बारे में जानकारी खोजने में काफी मुश्किल है, क्योंकि सर्च इंजन आमतौर पर इसे अनदेखा करते हैं। –

+0

प्रश्न एक डुप्लिकेट हो सकता है, लेकिन यूसुफ का उत्तर दूसरे प्रश्न पर चुने गए व्यक्ति से बेहतर है। मैं यहां इन उत्तरों को पढ़ने के बाद ही अपनी समस्या का समाधान करने में सक्षम था, इसलिए मुझे उम्मीद है कि वे भविष्य के खोजकर्ताओं के लिए संरक्षित हैं। –

+0

इसके अलावा, इसका एक हिस्सा डुप्लिकेट हो सकता है क्योंकि Google पर "यह" खोजना बहुत मुश्किल है। असल में, जब मैं पहली बार ओओपी में आया, तो मुझे "इस" के साथ-साथ "::" (paamayim nekudotayim) पर जानकारी खोजने में काफी समय लगा। –

उत्तर

12

this ऑब्जेक्ट नहीं बदलता है। यह समारोह का मालिक है। यह ज्यादातर मामलों में, बस एक नोड है और आप this.className जैसे सभी गुणों का संदर्भ दे सकते हैं। (इसके बारे में सोचें क्योंकि आप document.getElementById के साथ प्राप्त नोड या व्हाट्नॉट नहीं करेंगे)। यह सिर्फ समारोह का "मालिक" है।

इसलिए, आप बस this ऑब्जेक्ट को jQuery के $() पर पास कर रहे हैं।

निष्कर्ष: यदि आप वर्तमान नोड के लिए jQuery फ़ंक्शंस का उपयोग करना चाहते हैं, तो $(this) का उपयोग करें। लेकिन अगर आप वस्तुओं को अपनी संपत्तियों तक पहुंचना चाहते हैं (उदा। .name, className, .id), बस this का उपयोग करें।

+0

मुझे लगता है कि 'this' के बारे में उद्धरण थोड़ा भ्रामक है। – alex

+0

@alex कृपया मेरी उत्तर दें या यहां तक ​​कि यहां तक ​​कि मेरे उत्तर को भी दोबारा बताएं। –

+1

मैं सिर्फ उद्धरण को हटा दूंगा, आपका जवाब बहुत अच्छा है। – alex

5

इस जावास्क्रिप्ट के लिए है, jQuery के लिए $ (this)। आप jQuery के हर कार्यों के लिए $ (यह) का उपयोग कर सकते हैं, इसके लिए मामला नहीं।

संपादित करें: अपने उदाहरण के लिए मैं सिर्फ बढ़ती संख्या है कि वह (0 1 10 11the) $ पर है (यह) तत्व img ठीक आप क्या कर सकते हैं या तो:

$(this).on('click', function() { console.log(123); }); 
or 
$('img').eq(i).on('click', function() { console.log(123); }); 

EDIT2:

var sorter = { 
    sort: function() { 
     console.log('sorting'); 
    }, 
    requestSorting: function() { 
     this.sort(); 
    } 
} 
sorter.requestSorting.bind(sorter); 

इस उदाहरण में यह बिल्कुल पीएचपी कक्षा में $ इस तरह किया जाता है: यहाँ इस के उपयोग है। यही कारण है कि मैंने कहा कि यह शुद्ध जावास्क्रिप्ट कार्यों के लिए अधिक है।

+1

* यह जावास्क्रिप्ट के लिए है * इसका क्या अर्थ है? – alex

+0

उसका मतलब है कि कीवर्ड, "यह", मूल जावास्क्रिप्ट कार्यक्षमता है, जबकि "$ (यह)" jQuery विशिष्ट है, मूल जावास्क्रिप्ट नहीं है। –

+0

उपयोगकर्ता 1040899, संपादन के लिए धन्यवाद। यह स्पष्ट करता है कि "मैं" क्या करेगा, लेकिन यह समझ में नहीं आता है कि "$ (यह)" का उपयोग करने पर इसे क्यों पसंद किया जाएगा, जो उपयोग करने में आसान लगता है। +1 –

0
$(".class").click(function() { 

    $(this).load("/path/to/file.html"); 

}); 

इस उदाहरण में, this.class div करने के लिए बात कर रहा है और file.html की सामग्री लोड होगा कहा में div जब आप उस पर क्लिक किया।

तो .class पर क्लिक करें, file.html इसमें लोड हो जाता है।

+0

बहुत ही रोचक चाल। +1। लेकिन वास्तव में $ (यह) और इस के बीच के अंतर को स्पष्ट नहीं करता है या इसका उपयोग कब करना है। –

2

this jQuery में आम तौर पर HTMLSelectElement जैसे डीओएम तत्व को इंगित करता है।

jQuery फ़ंक्शन के साथ इसे फिर से लिखना आपको उस पर jQuery विधियों को कॉल करने की अनुमति देता है।

+0

उपयोगकर्ता 10408 99 ने कहा कि "यह" जावास्क्रिप्ट के लिए है, बनाम $ (यह) jquery के लिए है? जैसा कि मैं इसे समझता हूं, "$" वास्तव में संपूर्ण JQuery ऑब्जेक्ट के लिए लघुरूप है। –

+0

@ButtleButkus उस पर जानकारी के लिए मेरा जवाब देखें। –

1

इसे $() के अंदर डालने से इसे एक सामान्य वस्तु में बदल दिया जाता है, जिसमें सभी सामान्य jQuery विधियों को कॉल करने की क्षमता होती है। यह स्वयं ही किसी दिए गए ऑब्जेक्ट/तत्व के लिए एक सामान्य जावास्क्रिप्ट संदर्भ है।

+1

तो मैं हमेशा इस पर jquery विधियों का उपयोग करने और jquery गुणों का उपयोग करने के लिए "इस" के आसपास $() डाल सकता हूं? –

+0

हां, यह jquery वस्तुओं को बनाने के लिए मानक सम्मेलन है। – thescientist

0

आप $ (this) की जरूरत है या नहीं, यह संदर्भ आप काम कर रहे पर निर्भर करता है

यह चाहिए:।

  • जब jQuery घटनाक्रम इस डोम तत्व के रूप में पारित हो जाता है से निपटने कि घटना $ (इस) एक jQuery वस्तु

  • जब भी आप एक डोम तत्व अन्य मामलों में जहां आप एक डोम तत्व (या किसी वस्तु) है मिल में डोम तत्व बदल जाता है शुरू हो रहा है और यह एक jQuery ओ में बदल करना चाहते हैं bject

इसकी जरूरत नहीं है:

  • एक jQuery प्लग-इन jQuery प्लग में (jquery.fn) समारोह यह एक jQuery वस्तु पहले से ही ऐसा $ लागू करने के लिए कोई जरूरत नहीं है अंदर (यह) यहां में।

$ (यह) में कोई नुकसान नहीं हुआ है, भले ही यह एक jQuery ऑब्जेक्ट है क्योंकि jQuery एक ही ऑब्जेक्ट को वापस कर देगा।

+0

ठीक है, लेकिन क्या बारे में अंदर ".प्रत्येक" पाश? एक और सवाल में मैं जहाँ मैं "इस" के बजाय "$ (this)" का उपयोग करने के कुछ कोड था और एक उत्तर देने कहा कि यह गलत था। ".प्रत्येक" इनसाइड पाश मैं एक jQuery वस्तु तक पहुँचने या यह एक डोम तत्व है नहीं कर रहा हूँ? http://stackoverflow.com/questions/8463878/trying-to-set-css-property-left-to-using-jquery-centering-image-inside-div/8463929: (यहाँ अन्य प्रश्न मैं की बात कर रहा हूँ # 8463929) –

संबंधित मुद्दे