[JQUERY] 어떻게 부모 DIV에 만 불이 아니라 아이들 클릭 이벤트를하기?
JQUERY어떻게 부모 DIV에 만 불이 아니라 아이들 클릭 이벤트를하기?
해결법
-
1.e.target이 같은 요소가있는 경우, 당신은 자손에 클릭하지했습니다.
e.target이 같은 요소가있는 경우, 당신은 자손에 클릭하지했습니다.
$ ( '.는 foobar'). ({), 기능 (예 '를 클릭'에 (e.target! ==이) 경우 반환; 경고 ( '는는 foobar를 클릭'); }); .foobar { 패딩 : 20 픽셀; 배경 : 노란색; } 스팬 { 배경 : 파란색; 색상 : 흰색; 패딩 : 8px; } <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> script> .foobar (경고)
아이 (아무 경고) SPAN> DIV>2.만 대상으로 새로운 브라우저를 괜찮다면 작동하는 또 다른 방법이있다. 그냥 CSS를 추가
만 대상으로 새로운 브라우저를 괜찮다면 작동하는 또 다른 방법이있다. 그냥 CSS를 추가
pointer-events: none;
사업부의 아이들에게 당신은 클릭을 캡처합니다. 여기에 지원 테이블입니다
http://caniuse.com/#feat=pointer-events
3.나는 일을 허용 대답을하지 않았다, 그러나 이것은 적어도 바닐라 JS에서, 트릭을 할 것으로 보인다.
나는 일을 허용 대답을하지 않았다, 그러나 이것은 적어도 바닐라 JS에서, 트릭을 할 것으로 보인다.
if(e.target !== e.currentTarget) return;
4.당신은 당신의 호의에 버블 링을 사용할 수 있습니다 :
당신은 당신의 호의에 버블 링을 사용할 수 있습니다 :
$('.foobar').on('click', function(e) { // do your thing. }).on('click', 'div', function(e) { // clicked on descendant div e.stopPropagation(); });
5.
//bind `click` event handler to the `.foobar` element(s) to do work, //then find the children of all the `.foobar` element(s) //and bind a `click` event handler to them that stops the propagation of the event $('.foobar').on('click', function () { ... }).children().on('click', function (event) { event.stopPropagation(); //you can also use `return false;` which is the same as `event.preventDefault()` and `event.stopPropagation()` all in one (in a jQuery event handler) });
이벤트가 (자신의 이벤트 핸들러를 화재의를 .foobar 요소 (들)에 도달하지 않도록이 아이들 요소에 해당하는 경우에는 .foobar 요소 (들)의 (들)에 클릭 이벤트의 전파 (버블 링)를 중지합니다 ).
여기 데모입니다 http://jsfiddle.net/bQQJP/
6.
$(".advanced ul li").live('click',function(e){ if(e.target != this) return; //code // this code will execute only when you click to li and not to a child })
7.저도 같은 문제를했고,이 솔루션을 함께했다 (다른 답변 기준)
저도 같은 문제를했고,이 솔루션을 함께했다 (다른 답변 기준)
$( ".newsletter_background" ).click(function(e) { if (e.target == this) { $(".newsletter_background").hide(); } });
대상이 DIV 다음 다른 코드를 실행 아무것도하지 않는 경우 기본적으로 말한다 (숨길하지 않음)
8.내 경우는 비슷하지만 이것은 당신이 몇는 foobar-S를 가지고 있고, 당신은 단지 하나의 종료 할 때 기회입니다 - 한 번의 클릭 당 :
내 경우는 비슷하지만 이것은 당신이 몇는 foobar-S를 가지고 있고, 당신은 단지 하나의 종료 할 때 기회입니다 - 한 번의 클릭 당 :
$(".foobar-close-button-class").on("click", function () { $(this).parents('.foobar').fadeOut( 100 ); // 'this' - means that you finding some parent class from '.foobar-close-button-class' // '.parents' -means that you finding parent class with name '.foobar' });
$(".foobar-close-button-class").on("click", function () { $(this).child('.foobar-close-button-child-class').fadeOut( 100 ); // 'this' - means that you finding some child class from '.foobar-close-button-class' // '.child' -means that you finding child class with name '.foobar-close-button-child-class' });
9.당신은 event.currentTarget를 사용할 수 있습니다. 이 이벤트를 얻었다에만 elemnt 클릭 이벤트를 할 것입니다.
당신은 event.currentTarget를 사용할 수 있습니다. 이 이벤트를 얻었다에만 elemnt 클릭 이벤트를 할 것입니다.
타겟 = E => { CONSOLE.LOG (e.currentTarget); };
-
p> 리> UL>
-
10.당신은 포인터 이벤트를 사용할 수없는 경우 : 없음; 당신은 너무 같은 개체에 직접 클릭을 감지 composedPath를 사용할 수있는 최신 브라우저를 대상으로하고 있습니다 :
당신은 포인터 이벤트를 사용할 수없는 경우 : 없음; 당신은 너무 같은 개체에 직접 클릭을 감지 composedPath를 사용할 수있는 최신 브라우저를 대상으로하고 있습니다 :
element.addEventListener("click", function (ev) { if (ev.composedPath()[0] === this) { // your code here ... } })
여기 composedPath에 대한 자세한 내용을보실 수 있습니다 : https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath
-
11.// 그 리 GET 값의 경우 document.getElementById를 ( '리').하여 addEventListener ({), 기능 (예 "를 클릭" 경우 (e.target == 이것을) { UodateNote (e.target.id); } }) UodateNote 함수 (E) { nt_id = document.createElement ( "DIV")를 보자; // 둑에 추가 컨테이너. document.body.appendChild (nt_id); nt_id.id = "안녕하세요"; // conatiner 값을 얻는다. nt_id.innerHTML는 전자 =; // 몸... CONSOLE.LOG (E); } 리 { 커서 : 포인터; 폰트 중량 : 굵은; 폰트 크기 : 20 픽셀; 위치 : 상대; 폭 : 380px; 높이 : 80 픽셀; 배경 색상 : 실버; 정당화 - 내용 : 센터; 정렬-항목 : 센터; 텍스트 정렬 : 센터; 여백 - 상단 : 0.5 ㎝; 국경 : 2 픽셀 고체 보라색; 경계 반경 : 12 %} 피{ 커서 : 텍스트를; 폰트 사이즈 : 16px; 폰트 중량 정상; 표시 : 블록; 최대 폭 : 370px; 최대 높이 : 40px; 오버 플로우 엑스 : 숨겨진;} <리튬 ID = "리튬">
하이 p> 리>
// 그 리 GET 값의 경우 document.getElementById를 ( '리').하여 addEventListener ({), 기능 (예 "를 클릭" 경우 (e.target == 이것을) { UodateNote (e.target.id); } }) UodateNote 함수 (E) { nt_id = document.createElement ( "DIV")를 보자; // 둑에 추가 컨테이너. document.body.appendChild (nt_id); nt_id.id = "안녕하세요"; // conatiner 값을 얻는다. nt_id.innerHTML는 전자 =; // 몸... CONSOLE.LOG (E); } 리 { 커서 : 포인터; 폰트 중량 : 굵은; 폰트 크기 : 20 픽셀; 위치 : 상대; 폭 : 380px; 높이 : 80 픽셀; 배경 색상 : 실버; 정당화 - 내용 : 센터; 정렬-항목 : 센터; 텍스트 정렬 : 센터; 여백 - 상단 : 0.5 ㎝; 국경 : 2 픽셀 고체 보라색; 경계 반경 : 12 %} 피{ 커서 : 텍스트를; 폰트 사이즈 : 16px; 폰트 중량 정상; 표시 : 블록; 최대 폭 : 370px; 최대 높이 : 40px; 오버 플로우 엑스 : 숨겨진;} <리튬 ID = "리튬">
하이 p> 리>
from https://stackoverflow.com/questions/9183381/how-to-have-click-event-only-fire-on-parent-div-not-children by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 부트 스트랩 3 : 페이지 새로 고침 선택한 탭을 유지 (0) 2020.10.17 [JQUERY] jQuery를 체크 박스가 선택된 경우 (0) 2020.10.17 [JQUERY] 내 웹 응용 프로그램에 대한 사용자 정의 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴 만들기 (0) 2020.10.17 [JQUERY] JQuery와 플러그인을 확장하는 가장 좋은 방법 (0) 2020.10.17 [JQUERY] 어떻게 변경 이벤트에 라디오를 사용 하는가? (0) 2020.10.17