js 의 matches (JQ delegate closest 방법)
2494 단어 JavaScript
element.matches(String selector);
첫 번 째 부분 에서 이 방법 은 우리 가 사건 의뢰 를 할 때 매우 유용 하 게 보인다. 예시 코드 는 다음 과 같다.
document.querySelector('#wrap').addEventListener('click',function(e){
if(e.target.matches('a.btn')) {
e.preventDefault();
//TODO something
}
},false);
IE 8 은 msMatches Selector 방법 을 지원 하지 않 습 니 다. IE 8 을 지원 하기 위해 다음 과 같은 방법 으로 상기 함 수 를 처리 할 수 있 습 니 다.
function matchesSelector(element,selector){
if(element.matches){
return element.matches(selector);
} else if(element.matchesSelector){
return element.matchesSelector(selector);
} else if(element.webkitMatchesSelector){
return element.webkitMatchesSelector(selector);
} else if(element.msMatchesSelector){
return element.msMatchesSelector(selector);
} else if(element.mozMatchesSelector){
return element.mozMatchesSelector(selector);
} else if(element.oMatchesSelector){
return element.oMatchesSelector(selector);
} else if(element.querySelectorAll){
var matches = (element.document || element.ownerDocument).querySelectorAll(selector),
i = 0;
while(matches[i] && matches[i] !== element) i++;
return matches[i] ? true: false;
}
throw new Error('Your browser version is too old,please upgrade your browser');
}
두 번 째 부분 은 jquery 의 closest 를 교체 합 니 다.
Closest 는 선택 기 에 맞 는 첫 번 째 조상 요 소 를 얻 었 습 니 다. 현재 요소 부터 DOM 트 리 를 따라 위로 올 라 갑 니 다.
// jquery
$("selector").closest();
// js
function closest(el,selector){
const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector;
while (el){
if(matchesSelector.call(el,selector)){
return el;
}else {
el = el.parentElement;
}
}
return null;
}
//
//
onWrapTouchStart = (e) => {
if (!/iPhone|iPod|iPad/i.test(navigator.userAgent)) {
return;
}
const pNode = closest(e.target, '.am-modal-content');
if (!pNode) {
e.preventDefault();
}
}
본문 참고: 소천 지, 대세 계백마
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.