IT

jquery에서 두 요소를 비교하는 방법

lottoking 2020. 7. 3. 18:04
반응형

jquery에서 두 요소를 비교하는 방법 [중복]


var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))

항상 거짓입니다. jQuery에서 두 요소를 어떻게 비교할 수 있습니까?

감사


DOM 요소를 비교할 수 있습니다. jQuery 선택기는 참조 평등의 의미에서 결코 같지 않을 배열을 반환합니다.

가정 :

<div id="a" class="a"></div>

이:

$('div.a')[0] == $('div#a')[0]

true를 반환합니다.


레코드의 경우 jQuery에는 다음과 같은 is()기능이 있습니다.

a.is(b)

참고 a이미 jQuery를 인스턴스입니다.


jQuery () 함수를 호출 할 때마다 새 객체가 생성되어 반환됩니다. 따라서 동일한 선택기의 동등 검사조차 실패합니다.

<div id="a">test</div>

$('#a') == $('#a') // false

결과 jQuery 객체에는 기본적으로 HTMLDivElement항상 동일한 객체를 참조하는 것과 같은 기본 DOM 객체 인 일치하는 요소의 배열이 포함 되므로 Darin이 제안한대로 배열 색인을 사용하여 동일한 지 확인해야합니다.

$('#a')[0] == $('#a')[0] // true

a.is(b)

그들이 동등하게 사용되지 않는지 확인하기 위해

!a.is(b)

에 관해서

$b = $('#a')
....
$('#a')[0] == $b[0] // not always true

어쩌면 클래스가 요소에 추가되거나 첫 번째 할당 후에 제거 될 수 있습니다.


jQuery에서 "set equality"를 테스트하는 임의의 AirCoded 예제 :

$.fn.isEqual = function($otherSet) {
  if (this === $otherSet) return true;
  if (this.length != $otherSet.length) return false;
  var ret = true;
  this.each(function(idx) { 
    if (this !== $otherSet[idx]) {
       ret = false; return false;
    }
  });
  return ret;
};

var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];

console.log($(b).isEqual(a));

jQuery 컬렉션에서 가져온 컬렉션 결과는 집합 기반 비교를 지원하지 않습니다. 개별 멤버를 하나씩 비교할 수는 있지만 jQuery에 알고있는 유틸리티는 없습니다.

참고 URL : https://stackoverflow.com/questions/2407825/how-to-compare-two-elements-in-jquery

반응형