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
'IT' 카테고리의 다른 글
리스트를 대략 같은 길이의 N 개 부분으로 나누기 (0) | 2020.07.03 |
---|---|
BadValue 유효하지 않거나 사용자 로캘이 설정되지 않았습니다. (0) | 2020.07.03 |
라 라벨 마이그레이션 오류 : 구문 오류 또는 액세스 위반 : 1071 지정된 키가 너무 깁니다. (0) | 2020.07.03 |
iPhone / iPad의 UILabel에서 굵게 및 기울임 꼴을 어떻게 설정합니까? (0) | 2020.07.03 |
작업 표시 줄을 영구적으로 비활성화하는 방법 (0) | 2020.07.03 |