반응형
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
반응형
'programing' 카테고리의 다른 글
MYSQL: 테이블 "bar"에 문자열 "foo"가 포함된 모든 행 삭제 (0) | 2023.09.05 |
---|---|
MySQL DB(Windows 10, XAMPP CP v3.2.4)에서 키릴 데이터를 업데이트/삽입하는 방법은 무엇입니까? (0) | 2023.09.05 |
비동기 작업이 정말 개념적으로 결함이 있는 것입니까? 아니면 제가 무언가를 놓치고 있는 것입니까? (0) | 2023.09.05 |
R 스크립트 라인 번호를 오류로 가져오는 방법은 무엇입니까? (0) | 2023.09.05 |
MySQL Workbench > 플러그인 > 유틸리티 > SQL 쿼리 다시 포맷 (0) | 2023.09.05 |