JavaScript에서 이벤트 리스너는 사용자 상호 작용을 캡처하는 데 중요한 역할을 합니다. 발생할 수 있는 작업 중 하나는 특정 클래스가 있는 요소에 대한 클릭을 수신하는 것입니다.
최적의 성능을 보장하려면 이러한 목적으로 jQuery를 사용하는 것을 피하고 대신 순수 JavaScript를 사용하는 것이 좋습니다. 그러나 클래스 클릭에 대한 이벤트 리스너를 설정하려고 할 때 일반적으로 문제가 발생합니다. 코드가 의도한 경고를 트리거하지 않을 수 있습니다.
문제는 종종 getElementsByClassName을 잘못 사용했습니다. 이 메서드는 배열과 유사한 객체를 반환합니다. 즉, 배열과 비슷하지만 내장된 배열 메서드가 모두 부족하다는 의미입니다. getElementsByClassName 결과에 이벤트 리스너를 직접 추가하려고 하면 예상대로 작동하지 않습니다.
이 문제를 해결하려면 배열과 유사한 객체를 반복하고 각 개별 요소에 대한 이벤트 리스너:
// Retrieve all elements with the "classname" class var elements = document.getElementsByClassName("classname"); // Define the event handler function var myFunction = function() { var attribute = this.getAttribute("data-myattribute"); alert(attribute); }; // Add event listeners to each element for (var i = 0; i < elements.length; i++) { elements[i].addEventListener('click', myFunction, false); }
또는 ES6를 지원하는 경우 다음을 사용할 수 있습니다. 코드를 간소화하는 forEach() 메서드:
Array.from(elements).forEach(function(element) { element.addEventListener('click', myFunction); });
IE6, IE7 및 IE8과 같이 지원이 제한적인 브라우저는 getElementsByClassName을 지원하지 않을 수 있다는 점에 유의하는 것이 중요합니다. 이러한 경우 정의되지 않은 값을 반환합니다.
또한 이벤트 리스너를 사용할 때 이벤트 핸들러 함수의 컨텍스트를 고려하는 것이 중요합니다. 제공된 코드에서는 클릭된 요소를 의미합니다.
위 내용은 JavaScript에서 특정 클래스가 있는 요소에 이벤트 리스너를 효율적으로 추가하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!