jQuery: eq () ile get () karşılaştırması


98

JQuery'de yeniyim get()ve jQuery ile eq()işlevler arasındaki farkın ne olduğunu merak ediyorum . get()İşlevin ne yaptığını yanlış anlayabilirim, ancak aynı satırdaki döndürülen öğede döndürülen öğede bir işlevi çağıramamanın garip olduğunu düşündüm.

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

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


Yanıtlar:


194

.get()ve .eq()her ikisi de bir jQuery nesne dizisinden tek bir "öğe" döndürür, ancak tek öğeyi farklı biçimlerde döndürür.

.eq() bunu bir jQuery nesnesi olarak döndürür, yani DOM öğesi jQuery sarmalayıcısına sarılır, bu da jQuery işlevlerini kabul ettiği anlamına gelir.

.get()bir dizi ham DOM öğesi döndürür. Ham bir DOM öğesinde yaptığınız gibi özniteliklerine erişerek ve işlevlerini çağırarak her birini değiştirebilirsiniz. Ancak jQuery ile sarılmış bir nesne olarak kimliğini kaybeder, bu nedenle benzeri bir jQuery işlevi .fadeInçalışmaz.


8
.get () bir dizi döndürür, .get (dizin) dizideki dizindeki tek öğeyi döndürür.
Mohamed Fasıl

16

get()oysa bir DOM elemanını döner :eq()ve eq()bir jQuery elemanı döndürür. DOM öğelerinin yöntemi fadeIn()olmadığından başarısız olur .

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

Açıklama: jQuery nesnesi ile eşleşen DOM öğelerini alın.

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

Açıklama: Eşleşen küme içinde n dizinindeki öğeyi seçin.


12

get(0)(docs) , kümedeki ilk DOM öğesini döndürür.

eq(0)(docs) , kümedeki ilk DOM öğesini bir jQuery nesnesine sarılmış olarak döndürür.

Bu yüzden .fadeIn("slow");çalıştığınızda çalışmıyor .get(0). Bir DOM öğesinin bir fadeIn()yöntemi yoktur, ancak bir jQuery nesnesi vardır.


6

Diğer cevapların üzerine inşa etmek için:

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

1
Birincisi doğru. İkincisi değil. 2 nesne aynı değil
Royi Namir

5

eq(i)alıcının kümesindeki i'inci üyeyi bir jQuerynesne olarak alırken get(i), i'nci konumdaki üyeyi bir DOM öğesi olarak döndürür.

Bunun işe yaramamasının nedeni:

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

Çünkü mı h2DOM öğesi adlı bir yöntem yoktur fadeIn.

Sen kullanmalıdır eq(0)yerine buraya.


0

Burada başkalarının verdiği noktaları açıklayan bir örnek veriyorum. aşağıdaki kodu düşünün

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

ve ilgili js kodu,

$(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);
    });

Bu göreceğin şey

 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]

İlki bir DOM nesnesidir, ikincisi ise Jquery yöntemlerini çağırabileceğiniz Jquery ile sarılmış bir nesnedir.


0

jQuery eq () yöntemi, belirli bir dizin numarasına sahip bir HTML öğesini seçer.

İşte bunun bir örneği

<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.

Kaynak: http://www.snoopcode.com/JQuery/jquery-eq-selector


"ikinci div'i bulur" => eq(2)üçüncü div'i döndürmez mi?
xhienne

0

Yukarıdaki cevaplar özel ve doğru bir şekilde açıklanmıştır. Buraya kullanımına yardımcı olabilecek birkaç nokta eklemek istiyorum get().

  1. Bir argüman .get()iletmezseniz, DOM öğelerinin bir Dizisini döndürür.

  2. Kullandığınız bir DOM nesnesi var ise get()olduğu gibi, var s = $("#id").get(0) sadece bu kullanarak geri jQuery nesnesi dönüştürebilirsiniz,$(s)

  3. Kullanmak $obj[i]istemiyorsanız alternatif bir yol olarak kullanabilirsiniz $obj.get(i), aşağıya bakınız,

    var $obj = $("#ul li");
    var obj1 = $obj.get(1);
    var obj2 = $obj[1];
    
    //true
    return obj2===obj1;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.