혹시 전역으로 이벤트리스너 설정이 가능한가요?
936
작성한 질문수 4
안녕하세요~ main.js 같은 곳에 전역으로 리스너를 선언해서 각각 컴포넌트 내에서 일어나는 클릭이나 router 변경 등을 감지하고 싶은데요!
$(document).ready(function() {
let logoElement = document.getElementById('logo')
logoElement.addEventListener('click', function() {
console.log("로고를 클릭했습니다.")
})
let imgElement = document.querySelector('.img')
imgElement.addEventListener('click', function() {
console.log("이미지를 클릭했습니다.")
})
})
이런식으로 엘리먼트 하나하나 클릭할때마다 콘솔이 찍혔으면 좋겠는데 가능한가요?
부모-자식으로 구성되어있는데 하위의 하위(=자식의 자식) 레벨의 컴포넌트에서의 클릭도 인식할 수 있나요?
각 Vue 파일마다 mounted()에서 $(document).ready(~)를 통해 이벤트리스너를 달아야하는건지, 아니면 한 파일에 전역으로 선언해서 공통으로 사용할 수 있는건지 궁금해요!
또 JQuery가 아닌 Vue로 구현할 수 있는 방식이 있나요?
답변 1
0
안녕하세요 pm님, 좋은 질문이네요 :) 뷰에서 제공하는 v-on:click 디렉티브는 위에서 적어주신 이벤트 리스너 부착 방식과 동일합니다. 따라서, 이벤트 propagation을 이용해서 최상위 HTMLElement에 클릭 이벤트 리스너를 달아주시고 아래에서 어떤 엘리먼트에서 클릭된 것인지 구분하시면 될 것 같습니다. 이 부분은 뷰의 특징이 아니라 자바스크립트의 기본적인 이벤트 전파 방식입니다. 혹시 개념이 생소하시면 아래 글 읽어보시면 될 것 같아요 :)
https://joshua1988.github.io/web-development/javascript/event-propagation-delegation/
깃 권한 요청 드립니다
0
50
1
깃 권한 신청
0
50
1
깃 권한 요청드립니다.
0
111
1
깃허브 권한 요청 드립니다
0
144
1
깃허브 권한 요청 드립니다
0
160
1
깃허브 권한 요청 드립니다
0
167
1
깃허브 권한 요청 드립니다.
0
154
1
안녕하세요 vue 2.7로 수강하고 있는 학생입니다. 실무에서 최하위 자식의 props와 watch의 관계를 여쭈고자 합니다.
0
207
1
ide 타입추론 기능 사용할 수 없을까요??
0
205
1
컴포넌트 링크는 vue peek 익스텐션 설치가 필수인가요??
0
227
1
Vue3로 진행중입니다
1
338
1
Vue router-link 사용시 같은 url이면
1
506
1
vue3 에러 메세지...
1
670
2
id ="app" 중복
0
271
2
use undefined 에러가 나옵니다.
1
317
2
깃허브 권한 요청드립니다.
1
358
2
권한요청드립니다.
1
299
2
Vue3에서 구글 애드센스 탑재하기
1
435
2
코드가 정상 작동 되는건지 ...
1
302
1
강의에서 api를 따로 빼셨는데 얻는 이점이 뭐죠?
1
243
1
vuex 적용시 질문
1
285
2
라우터 버전이 안맞는데 어떤걸 써야하나요
1
377
2
UserView에 id 속성만 undefined로 넘어오는데 이유를 모르겠습니다..
1
450
2
권한요청 드립니다!
1
270
2





