2016-07-05 2 views
3

JQuery (isHovered와 같은)를 사용하여 의사 클래스의 상태를 확인할 수 있으며 해당 요소를 검사 할 수있는 요소는 querySelector (/ querySelectorAll)를 실행하여 특정 의사 클래스를 가졌음을 알 수 있습니다. 부모 노드.순수 자바 스크립트에서 요소의 가상 클래스 쿼리하기

처음에는 JQuery를 사용하지 않을 것이므로 JQuery에는 쿼리 할 의사 클래스에 대한 is 메서드가 없습니다.

두 번째 해결 방법이 더러운 것처럼 보입니다. 개체의 속성 (개체가 Dom 요소 임)이라면 부모 노드에서 q 기능을 실행하지 않고 직선적 인 방식으로이를 가져올 수 있어야합니다. 내 요소에 부모 노드가없는 경우 (가상 노드가있는 부모 노드가없는 요소의 가능성에 대해 질문 할 수 있습니다. 브라우저에서 현재 가능하거나 불가능할 수도 있지만 이론적으로 가상 일 수도 있습니다. Dom, 또는 브라우저의 향후 구현, idk.).

내가 원하는 것은 element.hasPseudoClass("<the class>") 또는 element.getPseudoClasses() 또는 기타 요소의 의사 클래스를 쿼리하는 편리한 방법입니다. 나는 곧장 뭔가를 찾지 못했습니다.

답변

3

당신은

element.matches(':hover') 

var box = document.getElementById("box"); 
 
var msg = document.getElementById("msg"); 
 

 
setInterval(() => msg.textContent = box.matches(':hover') ? "in" : "out", 1000);
<div id="box" style="width: 100px; height: 100px; background-color: red; "></div> 
 
<div id="msg"></div>

MDN documentation를 참조 할 수 있습니다.

+0

감사합니다. Google에서 발견 한이 문제에 대한 스레드가 없습니다. 나는 이런 것이 있어야한다는 것을 알았습니다. – Sassan

+0

크롬에서 작성한 방식대로 작동하지 않습니다. 'element.matches ('div : hover ')'또는'element.matches (element.tagName +': hover ')'로 변경하십시오. – Sassan

+0

크롬 51에서 제대로 작동합니다. ': 호버 (hover)'는 완벽하게 유효한 선택 자이며 태그에 의해 자격이 주어져서는 안된다. –

관련 문제