2011-04-10 11 views
7

मुझे $ (यह) समझने में सहायता चाहिए। क्या यह 'इस' के कोष्ठक के भीतर संकीर्ण करना संभव है या "यह" किसी भी अन्य विशेषताओं के उपयोग को रोकता है?

उदाहरण के लिए: मुझे समझ नहीं आता क्यों इस कोड:

$(this).children("div") 

इस तरह फिर से लिखा नहीं जा सकता:

$('#'+$(this).attr("id")+" div") 
: की तरह कुछ का सहारा के बिना

$(this +" div") 

इसके अलावा, क्या आप मुझे JQuery दस्तावेज़ में 'यह' इंगित कर सकते हैं? स्पष्ट कारणों से खोज शब्द के रूप में 'इस' का उपयोग करना मुश्किल है।

+0

इस भाषा, यह कैसे माना जाता है की बतख टाइपिंग प्रकृति पता है कि कैसे आप चाहते हैं 'this' को देखते हुए इस्तेमाल किया गया? आपका उदाहरण तात्पर्य है कि यह एक स्ट्रिंग होना चाहिए जिससे आप चीजों को जोड़ सकें। –

+0

मैंने जेनेरिक फ़ंक्शन का उपयोग करके एक पूर्ण उदाहरण सहित बहस की, लेकिन यह उम्मीद में जेनेरिक रखने का फैसला किया कि निक की तरह कोई भी आएगा;) –

उत्तर

14

this एक jQuery "चीज़" नहीं है, लेकिन basic JavaScript one है। इसे उदाहरणों में आपके तरीके से फिर से लिखा नहीं जा सकता है क्योंकि यह एक वस्तु है, विशेष रूप से या तो एक डोम तत्व या एक jQuery ऑब्जेक्ट (आप किस संदर्भ में हैं) के आधार पर। तो तुमने किया था कि अगर यह:

$(this + " div") 

आप क्या चाहते वास्तव में कर तार जोड़ लिए this पर .toString() बुला रहा है, जिसका परिणाम:

$("[object Object] div") 

.... जो नहीं है एक वैध चयनकर्ता।

आगे पढ़ने के लिए, मेरा मानना ​​है कि this articlethis (एक संदर्भ कीवर्ड) का अर्थ जानने के लिए सर्वोत्तम संदर्भ/संसाधनों में से एक है।


टिप्पणी अनुरोध के अनुसार, क्या this विभिन्न स्थानों में है के कुछ उदाहरण:

  • घटना संचालकों, उदाहरण के लिए: $("selector").click(function() { alert(this); });
    • this DOM एलीमेंट ईवेंट हैंडलर किया जा रहा है को संदर्भित करता है ट्रिगर
  • एक jQuery प्लगइन के अंदर, उदाहरण के लिए: $.fn.myPlugin = function() { alert(this); });
    • this jQuery वस्तु प्लगइन पर श्रृंखलित/बुलाया गया था उदाहरण के लिए, है: $("selector").myPlugin();, this कि $("selector") jQuery वस्तु है।
  • किसी भी सामान्य समारोह के अंदर, उदाहरण के लिए: function myFunc() { alert(this); };
    • this, संदर्भ आप में हैं कि क्या यह एक वस्तु या कुछ और, कुछ उदाहरण हो:
    • $("selector").click(myFunc); - this है DOM एलीमेंट की तरह ऊपर
    • $("selector").click(function() { myFunc(); });, -, this वैश्विक सामग्री है window
    • myFunc.call(whatThisIs, arg1, arg2); - thiswhatThisIs
+0

+1 इस कारण की अच्छी व्याख्या के लिए आप – gnarf

+0

विस्तृत कर सकते हैं पूछताछ के लिए पूछताछ के लिए कि यह क्या है और यह सामान्य रूप से jQuery उपयोग के संबंध में अधिकांश संदर्भों में क्या संदर्भित करता है (यानी मैं प्लगइन के अंदर सोच रहा हूं, ईवेंट हैंडलर इत्यादि)? –

+0

यद्यपि आप शायद सही आईडी को वापस करने के लिए ऑब्जेक्ट की '.toString' पैच कर सकते हैं ... –

5

के लिए उपयोग .find()

$(this).find('div') 

या (आंतरिक रूप से, यह सिर्फ jQuery(selector, context) करने के लिए context पैरामीटर का उपयोग है कॉल फिन वैसे भी d ...)

$('div', this) 
0

this एक स्ट्रिंग एक सीएसएस चयनकर्ता (जैसे div, #my_id या .my_class) का प्रतिनिधित्व नहीं है।
jQuery फ़ंक्शन के लिए तर्क के रूप में this पास करते समय, यह वर्तमान तत्व (यह क्या होता है) के आधार पर एक jQuery ऑब्जेक्ट देता है, इसलिए आप $(this + selector) जैसे कुछ का उपयोग नहीं कर सकते हैं।

0

आप इस पर एक नज़र ले जा सकते हैं: http://api.jquery.com/each/

मूल रूप से this DOM एलीमेंट कॉलबैक संदर्भित कर रहा है है। आप $(this + " div") नहीं कर सकते क्योंकि आप किसी तत्व को स्ट्रिंग जोड़ रहे हैं। आपको सबसे पहले अपने तीसरे कोड स्निपेट में आईडी प्राप्त करने की आवश्यकता है।

वैसे, $(this).children("div") एक आईडी, जिस स्थिति में दूसरा तरीका बिल्कुल काम नहीं होगा नहीं हो सकता $('#'+$(this).attr("id")+" div")

पहले, this के रूप में ही नहीं है। और यहां तक ​​कि यदि उसके पास आईडी है, तो दूसरा कोड वास्तव में $(this).find("div") है। आप बच्चों को चाहते हैं सिर्फ तुम क्या करना है:

$('#'+$(this).attr("id") + " > div") 
0

सबसे पहले, आप को समझने के लिए क्या है इस चाहिए, यह एक सन्दर्भ पर निर्भर करती है। जब आप $ फ़ंक्शन कॉल करते हैं तो यह एक jQuery ऑब्जेक्ट वापस कर देगा।

$(this).children("div") 

यह विशिष्ट वस्तु से मतलब है, सभी बच्चों पाने के नीचे दिए गए लिंक देखें: http://jsfiddle.net/vietean/f2Yrg/

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