<div> <!--3. 클릭했다고 인지-->
<div> <!--2. 클릭했다고 인지-->
<p>안녕</p> <!--1. 클릭-->
</div>
</div>
document.querySelector('.black-bg').addEventListener('click', function(e){
e.target; // 실제 클릭한 요소(이벤트가 발생한 곳)
console.log(e.target);
e.currentTarget; // 이벤트 리스너가 달린 곳
this ; // e.currentTarget와 같음
e.preventDefaul(); // 이벤트 기본 동작을 막음 ex. 폼 전송 막음
e.stopPropagation();// 내 상위요소로 이벤트 버블링 막아줌
})

<div class="black-bg">
<div class="white-bg">
모달창 내용
</div>
</div>
document.querySelector('.black-bg').addEventListener('click', function(){
document.querySelector('.black-bg').classList.remove('show-modal');
})
but) 검은 배경 뿐 아니라 흰 배경이나 글자 등을 클릭해도 다 닫히는 문제점
cuz) <div class="white-bg">를 클릭하면 <div class="black-bg">이것도 클릭했다고 인지해서 <div class="black-bg">에 붙어있던 이벤트 리스너가 동작
document.querySelector('.black-bg').addEventListener('click', function(e){
if(e.target == document.querySelector('.black-bg')){
document.querySelector('.black-bg').classList.remove('show-modal');
}
});
console.log(e.target);console.log(document.querySelector('.black-bg'));console.log($('.black-bg'));
var button = $('.tab-button');
var content = $('.tab-content');
for(let i=0; i<$('.tab-button').length; i++){
button.eq(i).on('click', function(){
openTap(i);
});
}
function openTap(tap){ // 함수로 코드를 쌀 때 안에 변수가 있으면 변수를 파라미터로 바꾸기
button.removeClass('orange');
button.eq(tap).addClass('orange');
content.removeClass('show');
content.eq(tap).addClass('show');
}
<ul class="list"> 여기에 이벤트리스너 1개만 있어도 탭기능만들 수 있음<ul class="list">에 붙은 이벤트리스너도 동작하기 때문<div class="container mt-5">
<ul class="list">
<li class="tab-button orange">Products</li>
<li class="tab-button">Information</li>
<li class="tab-button">Shipping</li>
</ul>
<div class="tab-content show">
<p>상품설명입니다. Product</p>
</div>
<div class="tab-content">
<p>스펙설명입니다. Information</p>
</div>
<div class="tab-content">
<p>배송정보입니다. Shipping</p>
</div>
</div>
$('.list').click(function(e){
if(e.target == document.querySelectorAll('.tab-button')[0]){
openTap(0);
}
if(e.target == document.querySelectorAll('.tab-button')[1]){
openTap(1);
}
if(e.target == document.querySelectorAll('.tab-button')[2]){
openTap(2);
}
})
function openTap(tap){
button.removeClass('orange');
button.eq(tap).addClass('orange');
content.removeClass('show');
content.eq(tap).addClass('show');
}
<div data-데이터이름="값"></div>data-id="0"으로 데이터 숨김<ul class="list">
<li class="tab-button orange" data-id="0">Products</li>
<li class="tab-button" data-id="1">Information</li>
<li class="tab-button" data-id="2">Shipping</li>
</ul>

e.target.dataset.id 붙이기$('.list').click(function(e){
// console.log((e.target.dataset.id));
openTap(e.target.dataset.id);
})
function openTap(tap){
button.removeClass('orange');
button.eq(tap).addClass('orange');
content.removeClass('show');
content.eq(tap).addClass('show');
}