Как заблокировать спецсимвол ×

117
13 декабря 2020, 23:00

Всем доброго вечера! У меня такая проблема. Есть задание сделать меню с ценами и чтобы их можно было добавлять и удалять из заказа. После нажатия на кнопку оплаты, у меня должны блокироваться все кнопки с позициями, чтобы ничего нельзя было добавить в заказ и удалить из него. Блокировку кнопок для добавления я сделал, а вот как мне заблокировать спец символ ×, чтобы при нажатии на него в браузере позиция не удалялась? Обычная блокировка для кнопок не подходит, он ее игнорирует. Помогите пожалуйста. Вот вырезка как я блокировал кнопки:

document.querySelector('.payed').addEventListener('click', function() {
document.querySelector('.stuffing_cheese_small').disabled = true;
document.querySelector('.stuffing_potato_small').disabled = true;
}

И вот как я создал спецсимвол через js:

var deleteIcon = document.createElement('span');
deleteIcon.className = 'delete-position';
deleteIcon.innerHTML = '×';
bindDeleteEvent(deleteIcon);

(из комментария:)

мне больше подходит вариант с removeEventListener. Только вот не могу понять, у меня есть вот такая функция:

function bindDeleteEvent(element) {
    element.addEventListener('click', function(event) {
        var target = event.target;
        var closestPosition = target.closest('.position');
        closestPosition.remove();
    })
}

Как должен это должно выглядеть, вот так?:

document.removeEventListener('click',  bindDeleteEvent);      

Все, вот ответ на мой вопрос, если кому интересно:

 Array.prototype.slice.call(document.querySelectorAll('.delete-position')).forEach(function(element) {
        element.style.pointerEvents = 'none';
      });
Answer 1

Отключить события мыши для любого элемента можно через css, только нужно понимать что оно будет унаследовано дочерними элементами

js:

deleteIcon.style.pointerEvents = 'none';

css:

.disabled {
   pointer-events: none;
}

Вернуть обработку событий:

js:

deleteIcon.style.pointerEvents = 'auto';

css:

.disabled {
   pointer-events: auto;
}

document.querySelectorAll(".block").forEach(b => { 
  b.onclick = () => console.log(b.innerHTML); 
}) 
 
document.querySelectorAll(".test").forEach(b => { 
  b.style.pointerEvents="none"; 
})
.block{ 
  width:40px; 
  height:40px; 
  background-color:wheat; 
  margin:10px; 
  display:inline-block; 
  line-height:40px; 
  text-align:center; 
  cursor:pointer; 
  transition: 0.3s; 
} 
 
div.block:hover{ 
  background-color:red; 
} 
.disabled { 
  pointer-events:none; 
}
<div class="block">1</div> 
<div class="block" style="pointer-events:none">2</div> 
<div class="block disabled">3</div> 
<div class="block test">4</div> 
<div class="block">5</div> 
<div class="block test">6</div>

READ ALSO
работа с SVG иконками (html+css)

работа с SVG иконками (html+css)

Очень нужна помощь знатоковСуть в том, что есть свг иконки, при наведении они должны меня цвет (обводку, заливку)

129
Реально ли так наследоваться?

Реально ли так наследоваться?

Возможно ли так наследоваться? У меня просто ошибки выскакивают:

121
Как проверить является ли строка числом, если она содержит русские символы?

Как проверить является ли строка числом, если она содержит русские символы?

Написал функцию, которая проверяет каждый символ строки до тех пор, пока не встретит не цифру или терминирующий нольЕсли встречается не цифра,...

90
Что делает эта функция (SwapEnd)?

Что делает эта функция (SwapEnd)?

Столкнулся со следующей функцией, автор использует её при записи в данных вvtk файл

121