Câu trả lời:
Old Way (trước 1.7):
$("...").attr("onclick", "").unbind("click");
Cách mới (1.7+):
$("...").prop("onclick", null).off("click");
(Thay thế ... bằng bộ chọn bạn cần.)
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()
cho IE11.
Tôi biết điều này khá cũ, nhưng khi một người lạ bị lạc tìm thấy câu hỏi này để tìm câu trả lời (giống như tôi đã làm) thì đây là cách tốt nhất để làm điều đó, thay vì sử dụng removeAttr ():
$element.prop("onclick", null);
Trích dẫn doku chính thức của jQuerys :
"Xóa trình xử lý sự kiện onclick nội tuyến bằng .removeAttr () không đạt được hiệu quả mong muốn trong Internet Explorer 6, 7 hoặc 8. Để tránh các sự cố tiềm ẩn, hãy sử dụng .prop () thay thế"
<span onlick="method()">sometext>/span>
Sự kiện này là hoàn toàn unbinded và hoạt động tuyệt vời
onclick
tài sảnGiả sử bạn đã thêm nội tuyến sự kiện nhấp chuột của mình, như sau:
<button id="myButton" onclick="alert('test')">Married</button>
Sau đó, bạn có thể xóa sự kiện như sau:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
nghe sự kiệnGiả sử bạn đã thêm sự kiện nhấp chuột của mình bằng cách xác định trình xử lý sự kiện, như sau:
$("button").on("click", function() { alert("clicked!"); });
... hoặc như thế này:
$("button").click(function() { alert("clicked!"); });
Sau đó, bạn có thể xóa sự kiện như sau:
$("#myButton").off('click'); // Removes other events if found
Nếu bạn không chắc chắn sự kiện của mình đã được thêm vào như thế nào, bạn có thể kết hợp cả hai, như sau:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
nếu bạn đang sử dụng jquery 1.7
$('html').off('click');
khác
$('html').unbind('click');
Nó rất dễ dàng bằng cách sử dụng removeAttr.
$(element).removeAttr("onclick");
Sau khi cố gắng rất nhiều với bind, unbind, on, off, click, attr, removeAttr, prop, tôi đã làm cho nó hoạt động. Vì vậy, tôi có tình huống sau: Trong html của tôi, tôi KHÔNG đính kèm bất kỳ trình xử lý onclick nội tuyến nào.
Sau đó, trong Javascript của tôi, tôi đã sử dụng phần sau để thêm trình xử lý onclick nội tuyến:
$(element).attr('onclick','myFunction()');
Để xóa điều này sau đó khỏi Javascript, tôi đã sử dụng như sau:
$(element).prop('onclick',null);
Đây là cách nó hoạt động để tôi liên kết và hủy liên kết các sự kiện nhấp chuột trong Javascript. Hãy nhớ KHÔNG chèn bất kỳ trình xử lý onclick nội tuyến nào vào các phần tử của bạn.
.on('click', myFunction)
(lưu ý rằng myFunction
là không trong dấu ngoặc kép) và sau đó, sau này,.off('click')
Điều gì sẽ xảy ra nếu sự kiện onclick không trực tiếp trên phần tử mà từ phần tử mẹ? Điều này sẽ hoạt động:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
Hãy thử điều này nếu bạn hủy liên kết sự kiện onclick theo ID Sau đó sử dụng:
$('#youLinkID').attr('onclick','').unbind('click');
Hãy thử điều này nếu bạn hủy liên kết sự kiện onclick theo Lớp Sau đó sử dụng:
$('.className').attr('onclick','').unbind('click');