2013-05-07 4 views
1

Я бегу следующее:Отключает ('click') удаление onclick?

$("#myelement").unbind('click'); 

При просмотре $("#myelement")[0].onclick в окне Watch VS.NET 2010, я вижу "{...}".

Если unbind('click') удалить onclick события?

+1

@MohammadAdil право, но может обработчики событий с приложением OnClick = "..." быть несвязанным с '.unbind()'? это вопрос (как я понимаю это по крайней мере) –

+0

Он удаляет их в том смысле, что нажатие на элемент (ы) не приведет к запуску каких-либо функций, которые были связаны раньше. Как jQuery делает это «за кулисами», это не очень важно, но, вероятно, это не означает, что 'onclick' имеет значение null. –

+0

Проверьте это: http://jsfiddle.net/AwPnn/ – Aristos

ответ

2

Нет, он не удаляет событие onclick, как показано here.

Связанные события хранятся в объектах jQuery, поэтому unbind просто удаляет событие из объекта jQuery.

unbind удаляет события, которые были связаны с использованием метода jQuery bind и/или устаревшего метода live.

Если вы хотите сбросить фактическое onclick событие с помощью JQuery, а затем просто использовать один из следующих способов:

$('#myelement').attr('onclick',''); 
$('#myelement').removeAttr('onclick'); 

Если вы хотите, чтобы добавить событие в частности onclick элемента (не связываться щелчок событие JQuery), а затем просто использовать следующее:

$('#myelement').attr('onclick','alert(\'hello\')'); 

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


Кроме того, возможно, я советую вам использовать on и off методы JQuery вместо , Хотя эти доступны только в более новых версиях JQuery, они являются предпочтительным методом, как указано здесь:

По JQuery 1.7, метод .on() является предпочтительным способом для прикрепления обработчиков событий к документу. Для более ранних версий метод .bind() используется для привязки обработчика событий непосредственно к элементам . Обработчики привязаны к выбранным в данный момент элементам в объекте jQuery, поэтому эти элементы должны существовать в точке, где происходит вызов в .bind(). Для более гибкой привязки событий см. Обсуждение делегирования событий в .on() или .delegate().

Смотрите следующее для получения дополнительной информации:

  1. jQuery Attr Method
  2. jQuery Bind Method
  3. jQuery Unbind Method
  4. jQuery On Method
  5. jQuery Off Method
+0

После выполнения вышеуказанных сбросов, $ ('# myelement'). Click (function() {...}); работать, чтобы подключить новое событие против onclick? – 4thSpace

+0

@ 4thSpace Да, конечно, –

+0

@ 4thSpace Ooo wait, извините, я неправильно понял, что вы сказали. Это не так, я обновлю свой ответ –

2

Попробуйте это:

$('#myelement').attr('onclick','').unbind('click'); 
+0

, или мы можем сделать это, используя $ ('# myelement'). removeAttr ('OnClick'); – Milson

+0

Я вижу, что он меняется от {...} до "". Кажется, это работает. – 4thSpace

Смежные вопросы