2013-01-13 17 views
30

मैं jQuery के लिए थोड़ा नया हूं इसलिए मुझे घने होने के लिए क्षमा करें। jQuery एक वापस जाने के लिए नहीं होना चाहिए हैसरल jQuery चयनकर्ता केवल क्रोम में पहला तत्व चुनता है ..?

<td>Apples</td> 

: फिर भी

$('td') 

जब मैं इस, मैं निम्नलिखित उत्पादन प्राप्त: मैं Chrome की जे एस कंसोल के माध्यम से एक विशेष पृष्ठ पर सभी <td> तत्वों का चयन करना चाहते <td> टैग वाले तत्वों की सरणी? मैं केवल पहले तत्व को क्यों देख रहा हूं जो इस मानदंड से मेल खाता है? http://www.w3schools.com/html/html_tables.asp

संपादित करें:

यहाँ संबंधित साइट है मैं जोड़ने के लिए कि जब मैं क्रोम कंसोल में एक jQuery समारोह टाइप करें, मैं नहीं मिलता है एक jQuery वापस आपत्ति चाहते हैं। मुझे एक सादा HTML तत्व मिलता है। मेरे क्रोम को सेट अप/कॉन्फ़िगर करने के तरीके में कुछ गलत होना चाहिए।

+0

यह वास्तव में प्रत्येक तत्व का चयन करता है। [तत्व चयनकर्ता] (http://api.jquery.com/element-selector/) – Fallup

उत्तर

49

तो jQuery वेब पेज पर मौजूद नहीं है, और निश्चित रूप से कोई अन्य कोड $ के लिए कुछ प्रदान करती है, Chrome के जे एस सांत्वना $document.querySelector() के लिए एक शॉर्टकट प्रदान करती है।

आप प्राप्त कर सकते हैं कि आप क्या $$(), जो कंसोल द्वारा document.querySelectorAll() के लिए एक शॉर्टकट असाइन किया गया है के साथ चाहते हैं।

पता करने के लिए करता है, तो पेज jQuery होता है, आप कंसोल में jQuery निष्पादित कर सकते हैं। यह जानने के लिए कि क्या jQuery को $ पर असाइन किया गया है, तो आप $().jquery निष्पादित कर सकते हैं जो कि अगर ऐसा है तो jQuery संस्करण वापस कर देगा।

इसके अलावा, वहाँ हर वेबपेज में jQuery सुई ब्राउज़र एडऑन हैं।

+1

मामूली सुधार: '$ '' document.getElementById' के लिए उपनाम नहीं है - यह 'document.querySelector' के लिए उपनाम है। https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#queryselector – fbonetti

+1

यह सुधार निश्चित रूप से मामूली नहीं है :-) दरअसल, व्यवहार बदल दिया गया है। थोड़ी सी गुगल के साथ मैंने पाया [वेबकिट टिकट 92648] (https://bugs.webkit.org/show_bug.cgi?id=92648)। इस परिवर्तन को इंगित करने के लिए धन्यवाद। –

4

यदि jQuery स्थापित है और $ प्रतीक jQuery के लिए शॉर्टेंड है, तो $('td') एक jQuery ऑब्जेक्ट देता है। लेकिन, आपके द्वारा लिंक किए गए w3schools पृष्ठ में, मुझे नहीं लगता कि jQuery भी मौजूद है।

यदि jQuery मौजूद था और डीबगर ने $ प्रतीक को ओवरराइड नहीं किया है, तो $('td') एक jQuery ऑब्जेक्ट वापस करेगा। JQuery ऑब्जेक्ट एक सरणी जैसी वस्तु है (इसमें सरणी के कुछ गुण हैं), लेकिन यह वास्तविक सरणी नहीं है। यदि आप कंसोल में चीजों को देख रहे हैं, तो आपको यह सुनिश्चित करना होगा कि आप स्वयं को डीओएम तत्वों को देख रहे हैं, न कि jQuery ऑब्जेक्ट पर।

आप डोम तत्वों की एक वास्तविक सरणी प्राप्त करना चाहते हैं, तो आप ऐसा कर सकते हैं:

$('td').get(); 

जो डोम तत्वों की एक सरणी वापस आ जाएगी।

यदि यह काम नहीं करता है, तो आपको यह सुनिश्चित करने के लिए $('td').get() पर अपने कॉल के समय की जांच करनी चाहिए ताकि आप यह सुनिश्चित कर सकें कि td आइटम जो आप चाहते हैं, पेज में हैं।

+0

शायद समस्या मेरे क्रोम विन्यास के साथ है? जब मैं '$ ('td') टाइप करता हूं, तो मुझे एक jQuery ऑब्जेक्ट वापस नहीं मिलता है ... मुझे बस एक सादा HTML तत्व मिलता है। इसी तरह जब मैं '$ ('td') टाइप करता हूं।() 'मुझे त्रुटि संदेश मिलता है' TypeError: ऑब्जेक्ट # में कोई विधि नहीं है 'get'' – fbonetti

+0

@ एफ़बॉट - यह हो सकता है कि क्रोम डीबगर ने' एक डीबगिंग शॉर्टकट के रूप में $ '। 'JQuery ('td')' का उपयोग करने का प्रयास करें। – jfriend00

+0

jfriend00, जो सही के बारे में लगता है। जब मैं कंसोल में 'jQuery (' td ') टाइप करता हूं तो मुझे त्रुटि संदेश मिलता है' संदर्भ त्रुटि: jQuery परिभाषित नहीं किया गया है '। शायद मुझे क्रोम को फिर से इंस्टॉल करना चाहिए? मुझे हमेशा यह समस्या नहीं थी। – fbonetti

0

इसके अलावा, अगर आप में से प्रत्येक के साथ कुछ करने के लिए कोशिश कर रहे हैं टीडी के आप उन के माध्यम से पाश के लिए एक .each() उपयोग करने के लिए की आवश्यकता होगी। उदाहरण के लिए:

$('td').each(function() { 
    //do something relevant here 
}); 
14

ऐसा लगता है कि jQuery को आपके लक्षित पृष्ठ पर चलाने के लिए ठीक से शामिल नहीं किया गया है। मुझे Google Chrome के लिए निम्नानुसार एक ही समस्या थी और हल किया गया था।

URL फ़ील्ड के रूप में निम्नलिखित एक लाइनर कोड युक्त (यह पठनीयता के लिए सजा है) अपने Chrome ब्राउज़र में बुकमार्क जोड़ना:

javascript: (function() { 
    var s = document.createElement('script'); 
    s.setAttribute('src', 'http://code.jquery.com/jquery-latest.min.js'); 
    if (typeof jQuery == 'undefined') { 
     document.getElementsByTagName('head')[0].appendChild(s); 
    } 
    jQuery("td.edit select option[value=BN]").attr("selected", ""); 
})(); 

तो बस इसे चलाने के लिए है कि बुकमार्क पर क्लिक करें। यह सामान्य रूप से jQuery को शामिल करने और कंसोल को function (e,t){return new b.fn.init(e,t,r)} जैसे कुछ वापस करने की उम्मीद है, जैसा कि आप $ में टाइप करते हैं।

बुकमार्क बनाने की प्रक्रिया (बुकमार्लेट भी कहा जाता है) कंसोल के साथ काम करने के लिए हर पृष्ठ में jQuery इंजेक्शन के लिए एक छोटा सा हाथ है। हालांकि, स्निपेट कोड भी काम करता है यदि आप सीधे जेएस कंसोल में कॉपी-पेस्ट करते हैं।

पीएस: स्निपेट के लिए क्रेडिट मेरा नहीं है, क्योंकि मैं इसे थोड़ी देर के लिए उपयोग कर रहा हूं और याद नहीं कर सकता कि मुझे यह कहां से मिलता है।

उम्मीद है कि यह मदद करता है।

+0

मैं कोड को यूआरएल के रूप में कैसे रख सकता हूं ?? जिस पल में मैं एंटर दबाता हूं, वह Google खोजा जाता है (मेरे पास ओमनी बार Google खोज पर सेट है)। – akki

+0

क्रोम का उपयोग करते हुए, स्निपेट को एड्रेस बार में दर्ज करने के पल में, स्ट्रिंग की शुरुआत में "जावास्क्रिप्ट:" भाग अजीब रूप से छोड़ा जाता है और कमांड को खोज शब्द के रूप में व्याख्या किया जाता है। मैंने फ़ायरफ़ॉक्स के साथ परीक्षण किया है और ऐसा नहीं होता है। सुनिश्चित करें कि आप सीधे एड्रेस बार में स्निपेट का उपयोग करते समय फ़ंक्शन घोषणा के लिए "जावास्क्रिप्ट:" दर्ज करें। – rdonatoiop

+0

हाँ जो मेरे साथ भी होता है ... मैंने मैन्युअल रूप से 'जावास्क्रिप्ट' जोड़ा है, लेकिन फिर भी मारने पर कुछ भी नहीं होता है, पृष्ठ फिर से लोड हो जाता है या कुछ ... मैं कुछ भी नहीं कर सकता हूं – akki

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