2013-02-20 21 views
5

मैं उदाहरण के लिए इस राशि के साथ href रिटर्न:क्यों jQuery में "इस" तर्क एंकर

<div id="example"> 
    <a href="http://www.google.com/#1">Hello</a> 
    <a href="http://www.google.com/#4">Hello</a> 
</div> 

और jQuery के इस दो लाइन:

jQuery("a").filter(function() { 
    console.log(""+this+"") 
}); 

रिटर्न:

http://www.google.com/#1 

http://www.google.com/#4 

लेकिन

jQuery("a").filter(function() { 
    console.log(this); 
}); 

रिटर्न

<a href="http://www.google.com/#1">Hello</a>​ 

<a href="http://www.google.com/#4">Hello</a>​ 

क्यों लाइन 2, लंगर की HREF विशेषता वापसी, तो इसे '' तर्क "स्ट्रिंग" जोड़ सकता हूँ? jQuery डॉक्स का कहना है अगर फिल्टर एक समारोह तर्क है, "this" is the current DOM element

+0

जब आप कहते हैं, "रिटर्न", क्या आपका मतलब है कि ब्राउज़र कंसोल में आप 'console.log()' कॉल से यही देखते हैं? (मुझे लगता है कि यह तुम्हारा मतलब है ...) – Pointy

+0

क्या आपने उन 2 परिणामों को गलत तरीके से गोल किया है? "" + यह + "" href का मान वापस करना चाहिए - http://jsfiddle.net/9muyj/ –

+0

हां, परिणाम उलटा हुआ है। –

उत्तर

12

""+thisthis.toString() के बराबर है। a तत्व पर यह href (हाँ, यह अजीब है, और शायद कुछ समय पहले उपयोगी कुछ के साथ संगतता के लिए, लेकिन यह सभी ब्राउज़रों पर यह करता है) पर लौटाता है।

दूसरे मामले में, आप toString पर कॉल नहीं कर रहे हैं लेकिन ब्राउज़र निर्भर कंसोल स्वरूपण विधि। विभिन्न विकल्पों को बनाया गया था: क्रोम पर उदाहरण के लिए यह आमतौर पर बाहरी एचटीएमएल (एक browsable पेड़ के रूप में अगर यह बड़ा है) देता है।

+0

क्या 'href' वापस करने के लिए कोई विशिष्टता है? जब मेरा उत्तर लिखना शुरू होता है (जिसे मैंने आपके पक्ष में छोड़ दिया), मैं कहना चाहता था कि यह कार्यान्वयन-निर्भर था - लेकिन मुझे यकीन नहीं है। – Bergi

+0

मुझे कोई विशिष्टता नहीं मिली लेकिन यह एक तरह का (छोटा) ज्ञात तथ्य है और यह स्पष्ट रूप से सार्वभौमिक है। पुराना कारण शायद हंसने योग्य है और मैं इसे जानना चाहता हूं ... –

+0

http://www.w3.org/html/wg/drafts/html/master/text-level-semantics.html#the-a- तत्व "स्ट्रिंगफायर" href है, और लक्ष्य यदि यह अस्तित्व में नहीं है। –