Как удалить "onclick" с помощью JQuery?

PHP код:

<a id="a$id" onclick="check($id,1)" href="javascript:void(0)"  class="black">Qualify</a>

Я хочу удалить onclick="check($id,1) Так что ссылка не может быть нажата или "check($id,1) не будет уволен. Как я могу сделать это с помощью JQuery?

8 ответов


Старый Способ (pre-1.7):

$("...").attr("onclick", "").unbind("click");

Новый Путь (1.7+):

$("...").prop("onclick", null).off("click");

(заменить ... с селектором вам нужно.)

// use the "[attr=value]" syntax to avoid syntax errors with special characters (like "$")
$('[id="a$id"]').prop('onclick',null).off('click');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<a id="a$id" onclick="alert('get rid of this')" href="javascript:void(0)"  class="black">Qualify</a>

Я знаю, что это довольно старый, но когда потерянный незнакомец находит этот вопрос, ищущий ответ (как и я), то это лучший способ сделать это, а не использовать removeAttr():

$element.prop("onclick", null);

со ссылкой на jQuerys официальных Доку:

" удаление встроенного обработчика событий onclick с помощью .removeAttr () не достигает желаемого эффекта в Internet Explorer 6, 7 или 8. Чтобы избежать потенциальных проблем, используйте .опора (вместо)"


Если вы используете jquery 1.7

$('html').off('click');

else

$('html').unbind('click');

удаление onclick свойства

Предположим, вы добавили событие click inline, например:

<button id="myButton" onclick="alert('test')">Married</button>

затем вы можете удалить событие следующим образом:

$("#myButton").prop('onclick', null); // Removes 'onclick' property if found

удаление click прослушиватели событий

Предположим, вы добавили событие click, определив прослушиватель событий, например:

$("button").on("click", function() { alert("clicked!"); });

... или вот так:--11-->

$("button").click(function() { alert("clicked!"); });

затем вы можете удалить событие следующим образом :

$("#myButton").off('click');          // Removes other events if found

удаления

если вы не знаете, как было добавлено ваше событие, вы можете объединить оба, например:

$("#myButton").prop('onclick', null)  // Removes 'onclick' property if found
              .off('click');          // Removes other events if found

после попытки так сильно с bind, unbind, on, off, click, attr, removeAttr, prop я заставил его работать. Итак, у меня есть следующий сценарий: в моем html я не прикрепил никаких встроенных обработчиков onclick.

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

$(element).attr('onclick','myFunction()');

чтобы удалить это позже из Javascript, я использовал следующее:

$(element).prop('onclick',null);

Так это сработало для меня, чтобы связать и развязать события щелчка динамически в JavaScript. Не забудьте вставить встроенный обработчик onclick в элементы.


очень легко используя removeAttr.

$(element).removeAttr("onclick");

Что делать, если событие onclick не находится непосредственно на элементе, а из родительского элемента? Это должно сработать:

$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
    e.preventDefault();
    e.stopPropagation();
    return false;
});

попробуйте это, если вы отмените событие onclick по ID, затем используйте:

$('#youLinkID').attr('onclick','').unbind('click');

попробуйте это, если вы разблокируете событие onclick по классам, затем используйте:

$('.className').attr('onclick','').unbind('click');