Answers:
旧方法(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);
“使用.removeAttr()删除嵌入式onclick事件处理程序无法在Internet Explorer 6、7或8中获得理想的效果。为避免潜在的问题,请改用.prop()”。
<span onlick="method()">sometext>/span>
该活动完全不受限制并且效果很好
onclick
财产假设您内联添加了click事件,如下所示:
<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!"); });
...或者像这样:
$("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");
在尝试了bind,unbind,on,off,click,attr,removeAttr之后,我成功了。因此,我有以下情形:在我的html中,我没有附加任何内联onclick处理程序。
然后在我的Javascript中,我使用以下代码添加了一个内联onclick处理程序:
$(element).attr('onclick','myFunction()');
为了稍后从Javascript中删除它,我使用了以下命令:
$(element).prop('onclick',null);
这是它对我来说可以用Java绑定动态地绑定和取消单击事件的方式。切记不要在元素中插入任何内联onclick处理程序。
.on('click', myFunction)
(注意,myFunction
是没有引号),然后,后来,.off('click')
如果onclick事件不是直接在元素上而是在父元素上怎么办?这应该工作:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
如果您通过ID取消绑定onclick事件,请尝试以下操作,然后使用:
$('#youLinkID').attr('onclick','').unbind('click');
如果您按类取消了onclick事件的绑定,请尝试以下操作:
$('.className').attr('onclick','').unbind('click');