Можно ли отключить onclick без изменения его функции?

Я знаю способ отключить событие onclick для элемента:

element.onclick = null;

Включить:

element.onclick = function(){
   // something
};

или же

element.addEventListener("click", me);

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

Я хочу, чтобы функция оставалась такой, какая она есть, без необходимости устанавливать для нее значение null или что-то еще, чтобы отключить.

Взгляните на шаблон наблюдателя Книга

Gerardo BLANCO 19.06.2018 14:59

Немного неясно, чего вы хотите достичь ... вы хотите переопределить глобальный метод?

Pogrindis 19.06.2018 14:59

Нет, я просто хочу отключить onclick, но сохранить функции, не устанавливая для функции значение null

user9697902 19.06.2018 15:00

Вы не можете просто определить функцию где-нибудь в другом месте?

Michael Beeson 19.06.2018 15:00

Верните null и остановите распространение вашего события

Alexis 19.06.2018 15:00

@Michael Я мог бы, но это будет стоить времени, как это определено на стороне сервера.

user9697902 19.06.2018 15:01

Объявление функции, а затем установка ее в качестве функции для onclick элемента занимает не больше времени, чем объявление функции в назначении onlick.

Michael Beeson 19.06.2018 15:02

@Alexis Я указал на то, что я могу отключить, просто вернув null. но это не то, что я собирался делать, я пришел сюда, чтобы спросить, есть ли другой способ сделать это без изменения функций

user9697902 19.06.2018 15:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
17
8
4 925
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете сделать это в CSS.

<button onclick = "alert('clicked')">Can click</button>
<button onclick = "alert('clicked')" style = "pointer-events: none;">Cannot click</button>

Плюс: работает со всеми элементами HTML.

Минус: не препятствует действию клавиатуры

Это остановит кого-либо, использующего мышь для нажатия кнопки, но не помешает пользователям клавиатуры использовать ее.

Don Cruickshank 19.06.2018 15:13
Ответ принят как подходящий

Используйте атрибут 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.

Это хороший подход, но мне тоже нужно остановить клавиатуру, иначе я не могу ее использовать, но спасибо за ответ, за который я проголосовал

user9697902 19.06.2018 15:13

@luke, я думаю, он говорит, что этот метод отключит пользователей клавиатуры по сравнению с другим ответом (с событиями указателя), который не будет

Nik Weiss 19.06.2018 15:20

@DonCruickshank: Поскольку я тоже неправильно понял ответ, я отредактировал его, чтобы сделать его более понятным. Не стесняйтесь возвращаться или улучшать, если вы не согласны.

Heinzi 19.06.2018 16:45

@Heinzi Да, я понимаю, что в этом больше смысла. Спасибо!

Don Cruickshank 19.06.2018 17:08

Вы можете сделать это так

<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 без каких-либо изменений в скрипте.

Kapil Tiwari 20.06.2018 09:51

Другие вопросы по теме