Как удалить "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. Чтобы избежать потенциальных проблем, используйте .опора (вместо)"
удаление 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 в элементы.
Что делать, если событие 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');