Когда пользователь щелкает элемент <li>
или его дочерний элемент, я хочу добавить класс к этому элементу <li>
.
Это отлично работает, но для повышения производительности я решил связать это событие с <ul>
-элементом, поэтому открепление и связывание этого события происходит намного быстрее в списке, состоящем из 1000 <li>
-элементов. Единственное изменение, которое, я думал, мне пришлось сделать, это заменить this
на event.target
НО event.target
также может ссылаться на дочерний элемент элемента списка или даже на внука.
Есть ли простой способ проверить, является ли этот целевой элемент частью элемента списка, или мне нужно пройти путь от event.target
до достижения элемента <li>
?
Это то, что у меня было до того, как я решил связать событие с тегом <ul>
, который работает, но недостаточно быстро:
$('#list li').mousedown(function(){
$(this).addClass('green');
});
И это то, что у меня сейчас, которое не работает должным образом, mousedown на дочернем элементе не дает <li>
другое имя класса:
$('#list').mousedown(function(event){
if(event.target.nodeName == 'LI'){
$(event.target).addClass('green');
}
});
Интересно, будет ли мой второй способ добиться этого быстрее, если нет простого решения проверить, является ли этот целевой элемент частью элемента списка ...