두 요소가 동일한 지 테스트


87

나는 이것이 처음에는 작동한다고 생각합니다.

if ($('#element') == $('#element')) alert('hello');

하지만 그렇지 않습니다. 요소가 동일한 지 어떻게 테스트합니까?

답변:


138

jquery 1.6부터 이제 간단하게 다음을 수행 할 수 있습니다.

$element1.is($element2)

7
이것은 모든 최신 버전의 Jquery에 대한 최상의 답변입니다.
Chris Jaynes 2014

또 다른 하나는 나는 내가 같은 질문을 인터넷 검색이 답변을 찾는 끝날 때마다 찬성 투표 수 있으면 좋겠다
freefaller

75

이것은 작동합니다.

if ($(this)[0] === $(this)[0]) alert('hello');

그래서 이것은

if (openActivity[0] == $(this)[0]) alert('hello');

3
첫 번째 예를 제대로 반영하려면 두 번째 예가 ===가 아니고 ==이 아니어야합니까?
Prusprus

3
이 답변 JQuery와 이전 버전에서 마우스 오른쪽되었을 수도 있지만, 대부분의 사람들은 아마 지원하는 버전을 사용하는$.is
크리스 제인스


12

누군가 이미 말했듯이 두 개의 다른 순간에 래핑 된 동일한 HTML 요소는 두 개의 다른 jQuery 인스턴스를 생성하므로 결코 같을 수 없습니다.

대신 래핑 된 HTML 요소는 동일한 HTML 요소 인 경우 차지하는 메모리 위치가 동일하기 때문에 이러한 방식으로 비교할 수 있습니다.

var LIs = $('#myUL LI');
var $match = $('#myUL').find('LI:first');

alert(LIs.eq(0) === $match); // false
alert(LIs.get(0) === $match.get(0)) // TRUE! yeah :)

친애하는!


5

나는 열린 것을 표시하기 위해 addClass ()를 사용하고 쉽게 확인할 수 있습니다.


3

9 년 후, jQuery없이

두 요소가 동일한 경우 두 요소는 동일한 포인터를 가져야합니다. 그러므로,

document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false

0

Silky 또는 Santi가 말했듯이 고유 한 ID 또는 클래스가 가장 쉬운 테스트 방법입니다. if 문이 예상대로 작동하지 않는 이유는 두 개체를 비교하고 메모리에서 동일한 개체인지 확인하기 때문입니다.

항상 $ (this)에 의해 생성되는 새로운 객체이기 때문에 서로 같을 수 없습니다. 그래서 객체의 속성을 테스트해야합니다. 각 openActivity 요소에 테스트 할 수있는 다른 콘텐츠가 보장되는 경우 고유 한 ID / 클래스없이 벗어날 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.