Я знаю способ отключить событие onclick для элемента:
element.onclick = null;
Включить:
element.onclick = function(){
// something
};
или же
element.addEventListener("click", me);
Это нормально, но когда у вас есть несколько элементов, каждый из которых имеет одну и ту же функцию с разными значениями параметров, использование этого способа становится немного раздражающим. Есть ли способ отключить его, не жертвуя исходной функцией с ее параметрами?
Я хочу, чтобы функция оставалась такой, какая она есть, без необходимости устанавливать для нее значение null или что-то еще, чтобы отключить.
Немного неясно, чего вы хотите достичь ... вы хотите переопределить глобальный метод?
Нет, я просто хочу отключить onclick, но сохранить функции, не устанавливая для функции значение null
Вы не можете просто определить функцию где-нибудь в другом месте?
Верните null и остановите распространение вашего события
@Michael Я мог бы, но это будет стоить времени, как это определено на стороне сервера.
Объявление функции, а затем установка ее в качестве функции для onclick элемента занимает не больше времени, чем объявление функции в назначении onlick.
@Alexis Я указал на то, что я могу отключить, просто вернув null. но это не то, что я собирался делать, я пришел сюда, чтобы спросить, есть ли другой способ сделать это без изменения функций



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать это в CSS.
<button onclick = "alert('clicked')">Can click</button>
<button onclick = "alert('clicked')" style = "pointer-events: none;">Cannot click</button>Плюс: работает со всеми элементами HTML.
Минус: не препятствует действию клавиатуры
Это остановит кого-либо, использующего мышь для нажатия кнопки, но не помешает пользователям клавиатуры использовать ее.
Используйте атрибут disabled, чтобы отключить кнопку.
<button onclick = "alert('clicked')">Enabled</button>
<button onclick = "alert('clicked')" disabled>Disabled</button>
Преимущество этого метода (по сравнению с «событиями указателя», предложенными в альтернативном ответе) заключается в том, что он не только не позволит вам использовать кнопку в качестве пользователя мыши, но также остановит вспомогательные технологии и всех, кто использует клавиатуру.
В JavaScript вы можете отключить или включить атрибут с помощью:
el.disabled = true; // Disable.
el.disabled = false; // Enable.
Или с помощью jQuery вы можете:
$('button').prop('disabled', true); // Disable.
$('button').prop('disabled', false); // Enable.
Это хороший подход, но мне тоже нужно остановить клавиатуру, иначе я не могу ее использовать, но спасибо за ответ, за который я проголосовал
@luke, я думаю, он говорит, что этот метод отключит пользователей клавиатуры по сравнению с другим ответом (с событиями указателя), который не будет
@DonCruickshank: Поскольку я тоже неправильно понял ответ, я отредактировал его, чтобы сделать его более понятным. Не стесняйтесь возвращаться или улучшать, если вы не согласны.
@Heinzi Да, я понимаю, что в этом больше смысла. Спасибо!
Вы можете сделать это так
<button onclick = "false && alert('clicked')">Try Click (Disabled)</button>
<button onclick = "true && alert('clicked')">Try Click (Enabled)</button>
Он будет работать как для события щелчка, так и для события нажатия клавиши.
<button onclick = "false && alert('clicked')">Try Click (Disabled)</button>
<button onclick = "true && alert('clicked')">Try Click (Enabled)</button>@luke остановит вызов функции как событием key, так и событием click без каких-либо изменений в скрипте.
Взгляните на шаблон наблюдателя Книга