programing

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

padding 2023. 9. 5. 19:46
반응형

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

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

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

감사해요.

참고로 jQuery에는 다음과 같은 기능이 있습니다.

a.is(b)

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

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

가정:

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

다음 항목:

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

true를 반환합니다.

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

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

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

결과 jQuery 객체는 기본적으로 다음과 같은 네이티브 DOM 객체인 일치 요소 배열을 포함합니다.HTMLDivElement이는 항상 동일한 개체를 참조하므로 Darin이 제안한 배열 인덱스를 사용하여 동일성을 확인해야 합니다.

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

그리고 그것들이 동등하게 사용되지 않는지 확인합니다.

!a.is(b)

에 관해서는

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

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

랜덤 에어코드 jQuery의 "set equality" 테스트 예제:

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

반응형