๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript

[JavaScript] e.target , e.currentTarget

๋ฐ˜์‘ํ˜•

e.target , e.curentTarget ์ฐจ์ด์ 

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด,
e.target :: ์‹ค์ œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์š”์†Œ (๋‚˜๋งŒ ์ด๋ฒคํŠธ ๋ฐœ์ƒ)
e.currentTarget :: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋‹ฌ๋ฆฐ ์š”์†Œ (์ž์‹ ํด๋ฆญํ•ด๋„ ๋ถ€๋ชจ๋„ ์ด๋ฒคํŠธ ์œ„์ž„)

<div id="outer">outer
	<div id="inner">inner
		<button type="button" id="button">button</button>
	</div>
</div>
const outer = document.getElementById('outer');
const inner = document.getElementById('inner');
const button = document.getElementById('button');

function printLog(e) {
	const { target, e.currentTarget } = e;
	console.log(`target: ${target.id}, currentTarget: ${currentTarget.id}`);
}
outer.addEventListener('click', printLog);
// target: outer, currentTarget: outer
inner.addEventListener('click', printLog);
// target: inner, currentTarget: inner, outer
button.addEventListener('click', printLog);
// target: button currentTarget: button, inner, outer

์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ๋ง‰๊ธฐ

function printLog(e) {
	const {target, currentTarget} = e;
	// ํด๋ฆญ๋œ ๋Œ€์ƒ์ด ์ž๊ธฐ ์ž์‹ ์ผ ๋•Œ๋งŒ ๋กœ์ง์ด ๋™์ž‘ํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•œ๋‹ค.
	if(target !== e.currentTarget) return;
	console.log(`target: ${target.id}, currentTarget: ${currentTarget.id}`);
}

์ด๋ฒคํŠธ์œ„์ž„ ํ™œ์šฉํ•˜๊ธฐ

[์˜ˆ์ œ] ํ† ๊ธ€์Šคํฌ๋ฆฝํŠธ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ

<ul class="list">
	<li>item 1</li>
	<li>item 2</li>
	<li>item 3</li>
</ul>
const ul = document.getElementByClassName('list')[0];
function toggleLineThrough(e) {
	e.target.style.textDecoration = !e.target.style.textDecoration ? 'line-through' : '';
}
ul.addEventListener('click', toggleLineThrough);

Reference

https://db2dev.tistory.com/entry/JS-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EC%9D%98-target%EA%B3%BC-currentTarget-%EC%B0%A8%EC%9D%B4-with-%EB%B2%84%EB%B8%94%EB%A7%81

 

๋ฐ˜์‘ํ˜•