$('#todo').on('click', '.delete', () => { $(this).parent().remove();});
Вы используете функцию стрелки в качестве обратного вызова. Функции по умолчанию не связывают переменную 'this' по умолчанию. Вам нужно использовать объявление функции для обратного вызова. Следующее будет работать
$("#todo").on("click", ".delete", function() {
console.log("this", this);
$(this)
.parent()
.remove();
});
При этом, если вы все еще хотите использовать функции стрелок для обратного вызова, вы можете указать обратный вызов с параметром события следующим образом, который также будет работать
$("#todo").on("click", ".delete", event => {
console.log("this", event);
$(event.currentTarget)
.parent()
.remove();
});
Кроме того, так каквы используете Babel в npm run build, он преобразует код ES6 в реализацию ES5, чтобы все браузеры, которые могут не поддерживать ES6 javascript, и до сих пор могли запускать ваш код без ошибок.
Для дальнейшего использованиячитая об использовании функций стрелок, обратитесь к следующей статье.
https://www.freecodecamp.org/news/when-and-why-you-should-use-es6-arrow-functions-and-when-you-shouldnt-3d851d7f0b26/