2013-10-03 4 views
11

मैं निम्नलिखित index.html है:jquery तत्व आईडी मानता है? सामान्य व्यवहार?

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title></title> 
     <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"> 
     </script> 
     <script type="text/javascript"> 
      jQuery(document).ready(function($) { 
       console.log(foo); // jQuery assumes foo is an id? 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="foo">i'm a div</div> 
    </body> 
</html> 

कंसोल आउटपुट:

<div id="foo">i'm a div</div>

क्यों?

+0

नहीं jQuery के लिए विशिष्ट है, लेकिन जावास्क्रिप्ट। इससे पहले कभी अच्छा सवाल नहीं देखा। यहां एक पहेली है जो उपरोक्त को दर्शाती है: http://jsfiddle.net/Blade0rz/rjwPA/1 – CodingIntrigue

+2

यह 'window.foo' ढूंढ रहा है, जो आईडी द्वारा तत्व है। – Archer

+0

यह संयोग से एक अच्छा प्रदर्शन है कि क्यों आईडी को डीओएम में अद्वितीय होना चाहिए, और अन्यथा व्यवहार को कैसे परिभाषित किया जाएगा। – David

उत्तर

7

इसमें jQuery के साथ कुछ भी नहीं है।

ऐसा इसलिए है क्योंकि नामित तत्व (ID या name विशेषता वाले तत्व) विंडो ऑब्जेक्ट के गुण बन जाते हैं।

console.log(foo) के बाद से अपने div एक नामित तत्व (id="foo"), यह window में जोड़ा जाता है है console.log(window.foo);

के समान है।

Named access on window

+0

हालांकि प्रत्येक ब्राउज़र में नहीं है और यह spec का हिस्सा नहीं है। – plalx

0

JQuery कि कल्पना नहीं करता, बल्कि जावास्क्रिप्ट करता है। आपका foo अनजान है, इसलिए यह या तो पहचानकर्ता या अपरिभाषित होना चाहिए। आईडी foo वाला तत्व आपकी स्क्रिप्ट के दायरे में होता है, इसलिए इसके द्वारा पहचाना गया तत्व लॉग है।

यदि आप इसे bar पर बदल चुके हैं, तो आप bar को संदर्भित करने में सक्षम होंगे क्योंकि यह शीर्ष-स्तरीय आईडी होगा।

ध्यान दें कि इस तरह का उपयोग इस पर फंस गया है क्योंकि यह स्पष्ट नहीं है कि आप एचटीएमएल को संदर्भित किए बिना कोड में क्या कर रहे हैं। document.getElementById(...) का उपयोग करना या इसका एक संस्करण आमतौर पर पसंद किया जाता है क्योंकि यह स्पष्ट है कि आप क्या कर रहे हैं।

2

यह एक jQuery व्यवहार नहीं है, यह (मूल रूप से) एक इंटरनेट एक्सप्लोरर व्यवहार है। आईई ने हमेशा प्रत्येक डीओएम तत्व के लिए वैश्विक चर बनाया है जिसमें id विशेषता है। चर का नाम id के नाम पर रखा गया है और डीओएम तत्व का संदर्भ देता है। हाल ही में, अन्य ब्राउज़रों सूट का पालन कर रहे हैं।

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