source

두 원소가 동일한지 여부 검정

ittop 2023. 8. 26. 00:03
반응형

두 원소가 동일한지 여부 검정

처음에는 이것이 효과가 있을 것으로 생각합니다.

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

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

jquery 1.6에서 이제 간단하게 할 수 있는 일은 다음과 같습니다.

$element1.is($element2)

이렇게 하면 됩니다.

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

그래서 이것은

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

아니면 그냥

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

(새 jQuery 인스턴스 없음 ;-)

이미 누군가가 말했듯이, 두 개의 다른 순간으로 둘러싸인 동일한 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 :)

안부 전합니다!

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

9년 후 jQuery 없이

두 요소가 같은 경우 두 요소의 포인터가 같아야 합니다.따라서,

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

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

$(이것)에 의해 생성되는 것은 항상 새로운 객체이기 때문에, 그들은 결코 서로 동등할 수 없습니다.그렇기 때문에 물체의 특성을 테스트해야 합니다.각 openActivity 요소가 테스트할 수 있는 다른 콘텐츠를 가질 수 있도록 보장되는 경우 고유한 ID/클래스 없이 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/1269926/test-if-two-elements-are-the-same

반응형