පවරා ඇති සිදුවීම් හසුරුවන්නන් සම්බන්ධයෙන්, ඔබට මෙවැනි දෙයක් තිබිය හැකි තැන:
<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>
ඔබේ JS කේතය එසේ ය:
$(document).ready(function() {
$('ul').on('click li', function(event) {
var $target = $(event.target),
itemId = $target.data('id');
//do something with itemId
});
});
undefined
LI හි අන්තර්ගතය a වලින් ඔතා ඇති බැවින් <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)
DOM ගස සෙවීමට භාවිතා කරන්න , සහ එය සෙවීමට .find(selector)
(සාමාන්යයෙන් .first()
මෙන් .find(selector).first()
) භාවිතා කරන්න. භාවිතා කරන .first()
විට ඔබ භාවිතා කිරීමට අවශ්ය නැත .closest()
, මන්ද එය පළමු ගැලපෙන මුතුන් මිත්තන්ගේ මූලද්රව්යය පමණක් ලබා දෙන අතර .find()
ගැලපෙන සියලු පරම්පරාවන් ආපසු ලබා දෙයි.