jQuery : eq () 대 get ()


98

저는 jQuery를 처음 사용하고 jQuery get()eq()함수 의 차이점이 무엇인지 궁금 합니다. get()함수가 무엇을하는지 오해 할 수도 있지만 같은 줄의 반환 된 요소에서 반환 된 함수를 호출 할 수없는 것이 이상하다고 생각했습니다.

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

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


답변:


194

.get().eq()모두 복귀 JQuery와 객체 어레이로부터 하나의 "요소", 그러나 다른 형태의 하나의 요소를 리턴한다.

.eq() 이를 jQuery 객체로 반환합니다. 즉, DOM 요소가 jQuery 래퍼로 래핑되어 jQuery 함수를 허용합니다.

.get()원시 DOM 요소의 배열을 반환합니다. 원시 DOM 요소 에서처럼 속성에 액세스하고 함수를 호출하여 각각을 조작 할 수 있습니다. 그러나 jQuery로 래핑 된 객체로서의 정체성을 잃어 버리므로 jQuery 함수 .fadeIn는 작동하지 않습니다.


8
.get ()은 배열을 반환하고, .get (index)는 배열의 인덱스에있는 단일 요소를 반환합니다.
Mohamed Fasil 2014-08-10


12

get(0)(docs) 는 집합의 첫 번째 DOM 요소를 반환합니다.

eq(0)(docs) 는 jQuery 객체에 래핑 된 세트의 첫 번째 DOM 요소를 반환합니다.

그것이 .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 오브젝트가 동일하지 not.those 번째는
Royi Namir

5

eq(i)수신자의 세트에서 i 번째 멤버를 jQuery객체 로 검색하고 i get(i)번째 위치에있는 멤버를 DOM 요소로 반환합니다.

이것이 작동하지 않는 이유 :

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

h2DOM 요소에라는 메서드 가 없기 때문 fadeIn입니다.

eq(0)대신 여기에서 사용해야 합니다.


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]

첫 번째는 DOM 객체이고 후자는 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


"두 번째 div를 찾습니다"=> eq(2)세 번째 div를 반환 하지 않습니까?
xhienne

0

위의 답변은 구체적이고 정확하게 설명되었습니다. .NET 사용에 도움이 될 수있는 몇 가지 요점을 여기에 추가하고 싶습니다 get().

  1. 에 인수를 전달하지 않으면 .get()DOM 요소의 배열이 반환됩니다.

  2. 당신이 사용하여 DOM 객체를 가지고있는 경우 get()처럼, var s = $("#id").get(0) 당신은 단순히이를 이용하여 다시 jQuery를 객체로를 설정할 수 있습니다,$(s)

  3. $obj[i]을 사용하지 않으려면 다른 방법으로 사용할 수 있습니다. $obj.get(i)아래를 참조하십시오.

    var $obj = $("#ul li");
    var obj1 = $obj.get(1);
    var obj2 = $obj[1];
    
    //true
    return obj2===obj1;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.