প্রতিনিধি ইভেন্ট হ্যান্ডলারের ক্ষেত্রে, আপনার কাছে এরকম কিছু থাকতে পারে:
<ul>
<li data-id="1">
<span>Item 1</span>
</li>
<li data-id="2">
<span>Item 2</span>
</li>
<li data-id="3">
<span>Item 3</span>
</li>
<li data-id="4">
<span>Item 4</span>
</li>
<li data-id="5">
<span>Item 5</span>
</li>
</ul>
এবং আপনার জেএস কোডটি এর মতো:
$(document).ready(function() {
$('ul').on('click li', function(event) {
var $target = $(event.target),
itemId = $target.data('id');
//do something with itemId
});
});
এলআই undefined
এর বিষয়বস্তুটি একটিতে আবৃত <span>
থাকায় <span>
আপনি সম্ভবত আইটেমআইডিটি খুঁজে পেতে পারবেন , যার অর্থ সম্ভবত ইভেন্টের লক্ষ্য হবে। আপনি এটির মতো একটি ছোট চেক দিয়েও এটি পেতে পারেন:
$(document).ready(function() {
$('ul').on('click li', function(event) {
var $target = $(event.target).is('li') ? $(event.target) : $(event.target).closest('li'),
itemId = $target.data('id');
//do something with itemId
});
});
অথবা, আপনি যদি পঠনযোগ্যতা সর্বাধিক করতে পছন্দ করেন (এবং jQuery মোড়ানো কলগুলির অপ্রয়োজনীয় পুনরাবৃত্তি এড়াতেও):
$(document).ready(function() {
$('ul').on('click li', function(event) {
var $target = $(event.target),
itemId;
$target = $target.is('li') ? $target : $target.closest('li');
itemId = $target.data('id');
//do something with itemId
});
});
ইভেন্ট প্রতিনিধি ব্যবহার করার সময়, .is()
পদ্ধতিটি আপনার ইভেন্ট টার্গেট (অন্যান্য জিনিসের মধ্যে) আসলে আপনার যা প্রয়োজন তা যাচাই করার জন্য মূল্যবান। .closest(selector)
ডিওএম ট্রি অনুসন্ধান করতে ব্যবহার করুন এবং এটি অনুসন্ধান করতে .find(selector)
(সাধারণত মিলিত .first()
হিসাবে .find(selector).first()
) ব্যবহার করুন । ব্যবহার করার .first()
সময় আপনাকে ব্যবহার করার দরকার নেই .closest()
, কারণ এটি কেবল প্রথম ম্যাচের পূর্বপুরুষের উপাদানটি দেয়, যখন .find()
সমস্ত মিলে যাওয়া বংশধরকে ফিরিয়ে দেয়।