Відповіді:
Старий шлях (до 1,7):
$("...").attr("onclick", "").unbind("click");
Новий шлях (1.7+):
$("...").prop("onclick", null).off("click");
(Замініть ... потрібним вам селектором.)
Removing an inline onclick event handler using .removeAttr() doesn't achieve the desired effect in Internet Explorer 6, 7, or 8. To avoid potential problems, use .prop() instead
.prop()
для IE11.
Я знаю, що це досить старе, але коли загублений незнайомець знаходить це питання, шукаючи відповідь (як я), то це найкращий спосіб зробити це, замість того, щоб використовувати RemoveAttr ():
$element.prop("onclick", null);
Посилаючись на офіційний документ jQuerys :
"Видалення вбудованого обробника подій onclick за допомогою .removeAttr () не досягає бажаного ефекту в Internet Explorer 6, 7 або 8. Щоб уникнути потенційних проблем, використовуйте .prop () замість цього"
<span onlick="method()">sometext>/span>
Подія повністю не пов'язана і чудово працює
onclick
власностіПрипустимо, ви додали події клацання в рядку, наприклад:
<button id="myButton" onclick="alert('test')">Married</button>
Потім ви можете видалити подію так:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
слухачів подійПрипустимо, ви додали подію натискання, визначивши слухача події, наприклад:
$("button").on("click", function() { alert("clicked!"); });
... або так:
$("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
якщо ви використовуєте jquery 1.7
$('html').off('click');
ще
$('html').unbind('click');
Це дуже просто за допомогою RemoveAttr.
$(element).removeAttr("onclick");
Після настільки важких спроб прив’язати, відв’язати, увімкнути, вимкнути, натиснути, attr, RemoveAttr, prop, я змусив його працювати. Отже, у мене є такий сценарій: У своєму HTML я не додав жодних вбудованих обробників onclick.
Потім у своєму Javascript я використав наступне, щоб додати вбудований обробник onclick:
$(element).attr('onclick','myFunction()');
Щоб видалити це згодом з Javascript, я використав наступне:
$(element).prop('onclick',null);
Це так, як для мене працювали, щоб зв'язувати та відв'язувати події клацання динамічно в JavaScript. Не забудьте НЕ вставляти будь-який вбудований обробник onclick у ваші елементи.
.on('click', myFunction)
(зверніть увагу, що myFunction
це не в лапках), а потім, пізніше,.off('click')
Що робити, якщо подія onclick не безпосередньо від елемента, а від батьківського елемента? Це має працювати:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Спробуйте це, якщо від’єднати подію onclick за ідентифікатором. Потім скористайтеся:
$('#youLinkID').attr('onclick','').unbind('click');
Спробуйте це, якщо ви від’єднаєте подію onclick по класу. Потім використовуйте:
$('.className').attr('onclick','').unbind('click');