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

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

element.onclick = null;

Включить:

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

или же

element.addEventListener("click", me);

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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

<button onclick="false && alert('clicked')">Try Click (Disable)</button>

<button onclick="true && alert('clicked')">Try Click (Enable)</button>

он будет работать как для события click, так и для нажатия клавиши.

<button onclick="false && alert('clicked')">Try Click (Disable)</button>

<button onclick="true && alert('clicked')">Try Click (Enable)</button>