Развязывание встроенного onClick, не работающего в jQuery?

Хорошо так, я задаюсь вопросом, как развязать встроенное onclick событие в jQuery. Вы думали бы .unbind() работал бы, однако это не делает.

Для тестирования этого на себя играйте вокруг со следующим HTML и JavaScript:

function UnbindTest() {
    $("#unbindTest").unbind('click');
}

function BindTest() {
    $("#unbindTest").bind('click', function() { alert("bound!"); });
}


<button type="button" onclick="javascript:UnbindTest();">Unbind Test</button>
<button type="button" onclick="javascript:BindTest();">Bind Test</button>
<button type="button" onclick="javascript:alert('unbind me!');" id="unbindTest">Unbind Button</button>

Как Вы видите, развязывание не развязывает встроенное onclick событие... однако это действительно развязывает событие щелчка, добавленное с bind().

Так, я задаюсь вопросом, существует ли способ развязать встроенные onclick события за исключением выполнения следующего:

$("#unbindTest").get(0).onclick = "";

Спасибо

22
задан Polaris878 4 May 2010 в 18:51
поделиться

2 ответа

jQuery's unbind не работает на атрибутах onclick - он работает только для функций, которые были добавлены через bind и поэтому доступны в $(...).data('events'). Вы должны использовать removeAttr, чтобы удалить onclick.

Прочитайте этот вопрос для получения дополнительной информации.

34
ответ дан 29 November 2019 в 04:54
поделиться

unbind отключает обработчики событий, зарегистрированные с помощью bind , а не назначенные через onclick или другие атрибуты DOM0. Из документации:

Любой обработчик, прикрепленный с помощью .bind () , может быть удален с помощью .unbind () .

Редактировать : Вы отключаете обработчики DOM0, очищая соответствующий атрибут элемента. Мне пришлось найти способ сделать это в jQuery: removeAttr .

4
ответ дан 29 November 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: