$height: 10px
, а не просто 10? [style*='width: 200px'], [style*='width:200px']
(С пробелом и без пробела.)let basketItem = $('.basket__item');
. В таком случае в переменную попадает массив. Вы проверяете его длину в расчёте на то, что когда элемент скроется, длина массива изменится. Но это так не работает. Даже если бы fadeOut действительно удалял элементы из разметки, то в переменной basketItem всё равно бы ничего не изменилось, так как вы уже сохранили это в памяти и между DOM деревом и переменной нет реактивной связи. Таким образом, длинна массива basketItem в Вашем начальном коде не меняется никогда.
Итак:
в атрибуте onclick мы указали какую функцию нужно выполнить когда пользователь нажмёт на элемент.
Так же мы указали с каким аргументом эту функцию нужно выполнить.
Так как HTML разметка имеет свою объектную структуру и каждый HTML элемент создаётся от определённого класса, то this в атрибуте элемента - это ссылка на элемент, так как элемент - экземпляр класса. В данном случае элемент input экземпляр класса HTMLInputElement.
Ну вот, а в функции указали что она принимает на вход ссылку на html элемент.
Ну и воспользовались DOM Api - вышли на родительский элемент через свойство parentElement.
P.s. под "я слишком молод" я подразумевал, что уже очень давно никто не делает обработчики события через атрибуты элемента. Только через addEventListener