⊗jsPmOEEE 419 of 505 menu

JavaScript-এ Event অবজেক্টে ইভেন্ট এলিমেন্ট

Event অবজেক্টটি ইভেন্টটি যে এলিমেন্টে ঘটেছে তাও পেতে দেয়। এই এলিমেন্টটি target প্রপার্টিতে রয়েছে। এটি কেন প্রয়োজন, যদি এই এলিমেন্টটি this-এ থাকে?

ব্যাপারটি হল যে this সর্বদা সেই এলিমেন্টটি ধারণ করে যার সাথে ইভেন্টটি বাইন্ড করা ছিল, কিন্তু target প্রপার্টি - সেই এলিমেন্টটি যেখানে আসলে ক্লিক করা হয়েছে। এই আসল এলিমেন্টটি this-এর সাথে মিলতে পারে, বা নাও মিলতে পারে।

এর একটি উদাহরণ দেখা যাক। ধরা যাক আমাদের কাছে একটি div আছে, এবং তার ভিতরে একটি প্যারাগ্রাফ:

<div id="elem"> <p>text</p> </div>

আমরা div-এর সাথে একটি ইভেন্ট বাইন্ড করব, কিন্তু প্যারাগ্রাফে ক্লিক করব। এটা স্পষ্ট যে প্যারাগ্রাফে ক্লিক করা একই সাথে div-এ ক্লিক করার সমান, কারণ প্যারাগ্রাফটি আমাদের div-এর ভিতরে রয়েছে।

বর্ণিত ক্ষেত্রে দেখা যাবে যে target প্রপার্টিটি সেই চূড়ান্ত ট্যাগটি ধারণ করবে, যেখানে ইভেন্টটি ঘটেছে - অর্থাৎ প্যারাগ্রাফ, এবং div নয়। এটা নিশ্চিত হওয়া যাক:

let elem = document.querySelector('#elem'); elem.addEventListener('click', function(event) { console.log(event.target); // আমাদের প্যারাগ্রাফ প্রিন্ট করবে console.log(this); // আমাদের div প্রিন্ট করবে });

ধরা যাক আপনার কাছে ul তালিকা আছে li ট্যাগ সহ:

ul { padding: 30px; border: 1px solid red; } li { list-style-type: none; margin-bottom: 20px; border: 1px dashed black; } <ul id="elem"> <li>text</li> <li>text</li> <li>text</li> <li>text</li> <li>text</li> </ul>

:

ul ট্যাগে একটি ক্লিক হ্যান্ডলার বাইন্ড করুন। এই হ্যান্ডলারে tagName প্রপার্টি ব্যবহার করে পরীক্ষা করুন যে কোন ট্যাগে ক্লিক করা হয়েছে। যদি li ট্যাগে ক্লিক করা হয় - এই ট্যাগের টেক্সটের শেষে একটি বিস্ময়বোধক চিহ্ন যোগ করুন। আর যদি ক্লিক ul ট্যাগে করা হয় - এ সম্পর্কে তথ্য কনসোলে প্রিন্ট করুন।

mspldeesuz