* লক্ষ্য শ্রেণীর বাচ্চাদের ইভেন্টগুলি ট্রিগার করার অনুমতি দেওয়ার জন্য এটি সম্পাদনা করা হয়েছিল। বিস্তারিত জানার জন্য নীচে দেখুন। *
ইভেন্ট শ্রোতাদের এমন একটি শ্রেণিতে যুক্ত করার বিকল্প উত্তর যেখানে আইটেমগুলি প্রায়শই যুক্ত করা এবং সরানো হয়। এটি jQuery এর onক্রিয়াকলাপ দ্বারা অনুপ্রাণিত হয় যেখানে আপনি ইভেন্টটি শুনছেন এমন কোনও শিশু উপাদানের জন্য কোনও নির্বাচককে যেতে পারেন।
var base = document.querySelector('#base'); // the container for the variable content
var selector = '.card'; // any css selector for children
base.addEventListener('click', function(event) {
// find the closest parent of the event target that
// matches the selector
var closest = event.target.closest(selector);
if (closest && base.contains(closest)) {
// handle class event
}
});
ফিডাল: https://jsfiddle.net/u6oje7af/94/
এটি baseউপাদানটির বাচ্চাদের ক্লিকগুলির জন্য শুনবে এবং যদি কোনও ক্লিকের টার্গেটে নির্বাচকের সাথে মিলে যাওয়া পিতামাতারা থাকে তবে শ্রেণি ইভেন্টটি পরিচালনা করা হবে। পৃথক উপাদানগুলিতে আরও ক্লিক শ্রোতাদের যুক্ত না করে আপনি নিজের পছন্দ মতো উপাদানগুলি যুক্ত করতে এবং মুছে ফেলতে পারেন। এই শ্রোতা যুক্ত হওয়ার পরে যুক্ত উপাদানগুলির জন্য এটি তাদের সমস্তকেই ধরে ফেলবে, ঠিক যেমন jQuery কার্যকারিতা (যা আমি ধারণা করি হুডের নীচে কিছুটা অনুরূপ)।
এটি প্রচারের ইভেন্টগুলির উপর নির্ভর করে, তাই আপনি যদি stopPropagationইভেন্টটিতে অন্য কোথা থেকে থাকেন তবে এটি কার্যকর নাও হতে পারে। এছাড়াও, closestফাংশনটির আইই এর সাথে সামঞ্জস্যতার কিছু সমস্যা রয়েছে যা আপাতদৃষ্টিতে (কী হয় না?)।
আপনার যদি এই জাতীয় ক্রিয়াকলাপ বারবার শোনার মতো প্রয়োজন হয় তবে এটি একটি ফাংশন হিসাবে তৈরি করা যেতে পারে
function addChildEventListener(base, eventName, selector, handler) {
base.addEventListener(eventName, function(event) {
var closest = event.target.closest(selector);
if (closest && base.contains(closest)) {
// passes the event to the handler and sets `this`
// in the handler as the closest parent matching the
// selector from the target element of the event
handler.call(closest, event);
}
});
}
=========================================
সম্পাদনা: এই পোস্টটি মূলত এর matchesজন্য ফাংশনটি ব্যবহার করেছে ইভেন্ট টার্গেটে DOM উপাদানগুলি, কিন্তু এটি ইভেন্টের লক্ষ্যগুলি কেবল প্রত্যক্ষ শ্রেণীর মধ্যে সীমাবদ্ধ করে। closestপরিবর্তে ফাংশনটি ব্যবহার করার জন্য এটি আপডেট করা হয়েছে , কাঙ্ক্ষিত শ্রেণীর বাচ্চাদের ইভেন্টগুলিকেও ইভেন্টগুলি ট্রিগার করার অনুমতি দেয়। মূল matchesকোডটি আসল ফিডলটিতে পাওয়া যাবে:
https://jsfiddle.net/u6oje7af/23/