Почему делегирование событий ES6 слушатель отслеживает щелчки ввода как нажатия кнопок? - PullRequest
0 голосов
/ 28 сентября 2018

Я не уверен, почему, когда я хочу прослушивать входные щелчки отдельно от нажатий кнопок, он не различает?Я поместил слушатель в UL для этого, так как LI динамически добавляются (делегирование события).Когда вы нажимаете на флажок, он распознается как кнопка.

function toggleDone(e) {
    if (!e.target.matches('button'))
    { return; }

Вот js / html

 <li>
   <input type="checkbox" data-index="${i}" id="item${i}" 
${item.chosen ? 'checked' : ''} /> 
   <label for="item${i}">${item.text} </label>
   <button title="delete" id="del${i}">X</button>
 </li>

Надеюсь, это не слишком большой вопрос для новичка,но я бы хотел понять, что я делаю что-то не так или это может быть реальная ошибка.

1 Ответ

0 голосов
/ 28 сентября 2018

Я использую e.target.localName вместо e.target и match вместо matches

let lis = Array.from(document.querySelectorAll("li"));


lis.map((li) =>{
  li.addEventListener("click", toggleDone )
})



function toggleDone(e) {
  //console.dir(e.target.localName)
  let str = e.target.localName;
  console.clear();
 if (!str.match('button'))
    { console.log("KK") }else{console.log("OK")}
}
<ul> 
<li>
   <input type="checkbox" data-index="1" id="item1"  checked /> 
   <label for="item1">item 1 text</label>
   <button title="delete" id="del1">X</button>
 </li>
 <li>
   <input type="checkbox" data-index="2" id="item2" /> 
   <label for="item2">item 2 text</label>
   <button title="delete" id="del2">X</button>
 </li>
 <li>
   <input type="checkbox" data-index="3" id="item3" /> 
   <label for="item3">item 1 text</label>
   <button title="delete" id="del3">X</button>
 </li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...