2011-01-17 14 views
90

मैं jQuery के लिए नया हूं, और मुझे आश्चर्य है कि jQuery के get() और eq() फ़ंक्शंस के बीच क्या अंतर है। मैं गलत समझ सकता हूं कि get() फ़ंक्शन क्या करता है, लेकिन मैंने सोचा कि यह अजीब बात है कि मैं उसी पंक्ति में लौटाए गए तत्व पर लौटाए गए फ़ंक्शन को कॉल नहीं कर सका।jQuery: eq() बनाम प्राप्त करें()

//Doesn't work 
I.e. $("h2").get(0).fadeIn("slow"); 

//Works 
$("h2").eq(0).fadeIn("slow"); 
+0

के संभावित डुप्लिकेट [प्राप्त के बीच का अंतर() और jQuery में eq()], $obj.get(i) उपयोग करने के लिए, नीचे देखें चाहते हैं (http://stackoverflow.com/questions/4662301/difference-between-get-and-eq-in-jquery) – PeeHaa

उत्तर

174

.get() और .eq() दोनों एक jQuery ऑब्जेक्ट सरणी से एकल "तत्व" लौटाते हैं, लेकिन वे एकल तत्व को विभिन्न रूपों में वापस कर देते हैं।

.eq() इसे एक jQuery ऑब्जेक्ट के रूप में लौटाता है, जिसका अर्थ है कि डीओएम तत्व jQuery रैपर में लपेटा गया है, जिसका अर्थ है कि यह jQuery कार्यों को स्वीकार करता है।

.get() कच्चे डोम तत्वों की एक श्रृंखला देता है। आप उनमें से प्रत्येक को अपने गुणों तक पहुंचने और अपने कार्यों को आविष्कार कर सकते हैं जैसे कि आप कच्चे डीओएम तत्व पर होंगे। लेकिन यह एक jQuery-wrapped ऑब्जेक्ट के रूप में अपनी पहचान खो देता है, इसलिए .fadeIn जैसे jQuery फ़ंक्शन काम नहीं करेगा।

+0

इसे साझा करने के लिए धन्यवाद! – blackhawk

+7

.get() एक सरणी देता है, .get (अनुक्रमणिका) सरणी से इंडेक्स पर एकल तत्व देता है। –

14

get() जबकि :eq() एक डोम तत्व देता है और eq() एक jQuery तत्व लौट आते हैं। चूंकि डीओएम तत्वों के पास कोई विधि नहीं है fadeIn() यह विफल रहता है।

http://api.jquery.com/get/

विवरण: jQuery वस्तु के अनुरूप डोम तत्वों प्राप्त करें।

http://api.jquery.com/eq-selector/

विवरण: सूचकांक में n का मिलान नहीं हुआ सेट के भीतर तत्व का चयन करें। जबकि get(i) एक डोम तत्व के रूप में ith स्थिति में सदस्य रिटर्न

5

eq(i), एक jQuery वस्तु के रूप में रिसीवर के सेट में ith सदस्य प्राप्त करता है।

कारण है कि यह काम नहीं करता:

$("h2").get(0).fadeIn("slow"); 

क्योंकि h2 डोम तत्व एक विधि fadeIn बुलाया नहीं है है।

आपको इसके बजाय यहां eq(0) का उपयोग करना चाहिए।

11

get(0)(docs) सेट में पहला डोम तत्व देता है।

eq(0)(docs) एक jQuery ऑब्जेक्ट में लिपटे सेट में पहला डोम तत्व देता है।

यही कारण है कि .fadeIn("slow"); काम नहीं करता है जब आप .get(0) करते हैं। एक DOM तत्व में fadeIn() विधि नहीं है, लेकिन एक jQuery ऑब्जेक्ट करता है।

6

अन्य उत्तर पर निर्माण करने के लिए:

$('h2').get(0) === $('h2').eq(0)[0] //true 
$($('h2').get(0)) === $('h2').eq(0) //true 
+1

पहला एक सही है। दूसरा नहीं है। ये 2 वस्तुएं समान नहीं हैं –

0

मैं एक उदाहरण है कि दूसरों को यहाँ द्वारा दिए गए अंक बताते दे रहा हूँ। निम्नलिखित कोड

<div id="example"> 
    Some text 
    <div>Another div</div> 
    <!--A comment--> 
</div> 

और इसी js कोड पर विचार करें,

$(document).ready(function() { 
    var div = $("#example").get(0); 
    console.log(typeof(div)); 
    console.log(div); 
    console.log("XXXXXXXXX"); 
    var div_eq=$('#example').eq(0); 
    console.log(typeof(div_eq)); 
    console.log(div_eq); 
    }); 

यह आप क्या देखेंगे

object 
excercise1.js (line 5) 
<div id="example"> 
excercise1.js (line 6) 
XXXXXXXXX 
excercise1.js (line 7) 
object 
excercise1.js (line 9) 
Object[div#example] 

पहले एक डोम वस्तु है, जबकि दूसरा एक jQuery है -प्रकाशित वस्तु जहां आप Jquery विधियों को कॉल कर सकते हैं

0

jQuery eq() विधि एक विशिष्ट अनुक्रमणिका संख्या के साथ एक HTML तत्व का चयन करता है।

यहाँ कि

<body> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
</body> 

$("body").find("div").eq(2).addClass("red"); 
// it finds the second div in the html body and change it to red color. 

स्रोत का एक उदाहरण है: http://www.snoopcode.com/JQuery/jquery-eq-selector

0

जवाब ऊपर विशिष्ट रूप से और सही ढंग से समझा दिया है। मैं यहां कुछ बिंदु जोड़ना चाहता हूं जो get() के उपयोग में मदद कर सकते हैं।

  1. आप .get() को एक बहस में उत्तीर्ण नहीं होते हैं, तो यह डोम तत्वों की एक सरणी वापस आ जाएगी।

  2. आप get() का उपयोग कर एक डोम वस्तु, var s = $("#id").get(0) की तरह दिखाई देता है तो आप इसे jQuery वस्तु में वापस बस इस का उपयोग करते हुए, एक वैकल्पिक मार्ग के रूप में बदल सकते हैं $(s)

  3. आप उपयोग कर सकते हैं $obj[i] यदि आप नहीं

    var $obj = $("#ul li"); 
    var obj1 = $obj.get(1); 
    var obj2 = $obj[1]; 
    
    //true 
    return obj2===obj1; 
    
संबंधित मुद्दे