2011-10-24 30 views
5

मैं एक पृष्ठ पर jQueryify बुकमार्कलेट का उपयोग कर रहा हूं ताकि मैं कंसोल से jQuery फ़ंक्शंस को कॉल कर सकूं।कंसोल में jQuery ठीक से काम नहीं कर रहा है

"TypeError: jQuery("li")[0].children[0].html is not a function 
[Break On This Error] jQuery('li')[0].children[0].html(); 

मैं Google Chrome के वेबकिट सांत्वना के रूप में FireBug में यह कोशिश की है और साथ ही: लेकिन हर मैं एक चयनित वस्तु पर एक jQuery समारोह आह्वान, मैं त्रुटि मिलती है।

+0

आप बुकमार्कलेट पर क्लिक कर रहे हैं, सही? क्या आप उस बुकमार्कलेट से लिंक कर सकते हैं जिसका आप उपयोग कर रहे हैं और आप जो इनपुट करते हैं उसके साथ एक उदाहरण पृष्ठ? – Whetstone

+0

बस इस पृष्ठ पर इसकी पुष्टि की गई है जो पहले ही jQuery लोड कर रहा है, इसलिए मुझे नहीं लगता कि यह सिर्फ बुकमार्कलेट FYI है। – HurnsMobile

उत्तर

9

जब वर्ग कोष्ठकों का उपयोग कर अब आप jQuery वस्तुओं के साथ काम कर रहे हैं की कोशिश करो।

jQuery("li")[0] 

यह आपको एक DOMElement, न कि एक jQuery वस्तु के रूप में 1 li देता है।

jQuery("li")[0].children[0] 

यह एक DOMElement, न कि एक jQuery वस्तु के रूप में 1 li के 1 बच्चे देता है।

.html() 

यह फ़ंक्शन केवल jQuery ऑब्जेक्ट्स के लिए काम करता है। DOMElements के लिए, आप .innerHTML संपत्ति का उपयोग कर सकते हैं।

मैं DOMElements से निपटने के बजाय सुझाव देता हूं, आपको jQuery ऑब्जेक्ट्स के साथ काम करना जारी रखना चाहिए। बजाय इस उपयोग करके देखें:

jQuery('li').eq(0).children().eq(0).html() 
+0

+1, बहुत अच्छा उदाहरण – JaredPar

+0

डाउन-वोट क्यों? ** संपादित करें **: मैं देखता हूं क्यों। 'बच्चे (0) 'होना चाहिए' बच्चे()। eq (0)'। फिक्स्ड: -पी –

+1

@ रॉकेट यह मेरा डाउनवोट था। मुझे खेद है, बस एक गलती है। मुसीबत के लिए +1! – genesis

3

jQuery(jQuery("li")[0].children[0]).html(); 

या बेहतर एक

jQuery("li:eq(0)").children(':eq(0)').html(); 

या एक और एक

jQuery("li:eq(0)").children().eq(0).html(); 

भी इस एक काम करेंगे निम्न प्रयास

jQuery("li").eq(0).children().eq(0).html(); 
+0

नहीं, '[0]' एक DOM ऑब्जेक्ट देता है। – pimvdb

+0

त्रुटि 'एचटीएमएल' नहीं है 'बच्चों' – JaredPar

+0

'jQuery (" li ") [0]' एक गोलाकार है, एक jQuery ऑब्जेक्ट नहीं है, और इसलिए कोई बच्चा() 'फ़ंक्शन नहीं है। –

5

ऐसा लगता है कि आप एक DOM ऑब्जेक्ट children[0] पर एक jQuery फ़ंक्शन, html पर कॉल करने का प्रयास कर रहे हैं। एक jQuery वस्तु में लपेटकर कि और फिर बुला html

var temp = jQuery("li")[0].children[0]; 
var html = jQuery(temp).html(); 
+2

@genesis हाँ, यह एक डोम संपत्ति है। https://developer.mozilla.org/en/DOM/Element.children – JaredPar

5

चेक jQuery("li")[0].children[0] का परिणाम है, यह एक नियमित रूप से डोम वस्तु नहीं एक jQuery वस्तु है। अपने HTML देखे बिना मैं एक बेहतर चयनकर्ता की सिफारिश नहीं कर सकते हैं लेकिन एक सस्ता और गंदा ठीक

jQuery(jQuery('li')[0].children[0]).html();

यह डोम वस्तु एक jQuery वस्तु .html() समारोह है जो में परिणाम में परिवर्तित कर देंगे होगा।

+0

धन्यवाद! यह समझ में आता है और यह अब काम करता है! –

3

jquery ऑब्जेक्ट ([] का उपयोग करके) सरणी तत्वों तक पहुंचने से एक DOMElement लौटाता है, जिसमें स्पष्ट रूप से jquery के तरीके नहीं होते हैं। आप शायद इसके बजाय eq() का उपयोग करना चाहते हैं।

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