В вашей версии jQuery вы используете метод style
, который, я думаю, не существует. Я предполагаю, что это опечатка, и вы имели в виду css
, но поправьте меня, если я ошибаюсь.
Предположим, что предыдущее верно, и вы вызываете метод jQuery css
Есть несколько проблем с вашим переводом кода.
Во-первых, оператор $('.element').click(function(){
добавляет событие click для каждого элемента в DOM с классом element
. С document.querySelector('.element').addEventListener('click', event => {
вы только добавляете событие click к первому сопоставленному элементу. См. Документацию querySelector .
Если вы хотите добавить событие для каждого элемента, вам следует запросить их с помощью querySelectorAll и выполнить итерацию по коллекции, чтобы добавить прослушиватель событий.
Во-вторых, если вы не используете функцию стрелки для определения обработчика, у вас должен быть HTMLElement, где вы щелкнули по атрибуту this
. В качестве альтернативы, если вы хотите использовать функцию стрелки, вы можете использовать event.currentTarget
, чтобы получить элемент, по которому щелкнул пользователь.
Принимая это во внимание, вы можете использовать:
var elements = document.querySelectorAll('.element');
elements.forEach(function(element) {
element.addEventListener('click', function(event) {
elements.forEach(function(elem) {
elem.style.backgroundColor = "white";
});
this.style.backgroundColor = "red";
});
});
или в качестве альтернативы, если вы хотите использовать функции стрелок:
var elements = document.querySelectorAll('.element');
elements.forEach(function(element) {
element.addEventListener('click', event => {
elements.forEach(function(elem) {
elem.style.backgroundColor = "white";
});
event.currentTarget.style.backgroundColor = "red";
});
});