Я пытаюсь преобразовать jquery в javascript. Мое приложение представляет собой простой список дел, и я нацеливаюсь на кнопку с идентификатором # clear-complete. Всякий раз, когда я нажимаю эту кнопку в моем приложении, оно удаляет завершенные элементы задач, но я не понимаю, на что оно нацеливается, в моем новом Javascript коде.
Вот исходный Jquery код
$('#footer').on('click', '#clear-completed', this.destroyCompleted.bind(this));
Итак, я изменил его на Javascript, и этот код сработал
var footer = document.getElementById('footer');
footer.addEventListener('click', this.destroyCompleted.bind(this))
Что я не понимаю, так это то, что произошло с идентификатором # clear-complete и как работает мой новый javascript код все еще работает, даже если я не указываю для целевой кнопки # clear-complete?
Вот код для функции destroyCompleted
destroyCompleted: function () {
this.todos = this.getActiveTodos();
this.filter = 'all';
this.render();
},
В отладчике, который он запускает через функцию activeTodos, но я нигде не вижу, на что нацелен id # clear-complete?
getActiveTodos: function () {
return this.todos.filter(function (todo) {
return !todo.completed;
});
},
getCompletedTodos: function () {
return this.todos.filter(function (todo) {
return todo.completed;
});
},
Правильно ли я записал свой Jquery в Javascript? Или я что-то пропустил?
Кроме того, если бы у идентификатора было более одного прослушивателя событий, как бы вы правильно его кодировали? например
$('#todo-list')
.on('change', '.toggle', this.toggle.bind(this))
.on('dblclick', 'label', this.edit.bind(this))
.on('keyup', '.edit', this.editKeyup.bind(this))
.on('focusout', '.edit', this.update.bind(this))
.on('click', '.destroy', this.destroy.bind(this));