这里的绝对新手......
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
function Foo() {
d = new Date();
alert("Hello" + d.getTime());
alert($('#a1').attr('id'));
$('#a1').unbind("click");
$('#a1').off("click");
$('#a1').unbind();
}
$(document).ready(function() {});
</script>
<input id='a1' type="button" value="foo" onclick="Foo();" />
</body>
</html>
然而每当我点击我的foo按钮时,它会很好地弹出所有警报......完全无视我的解除绑定,关闭,解除绑定的电话。
删除事件处理程序需要什么?
我的目标是当HTML设置的事件处理程序执行时,在事件处理程序中我取消绑定/取消设置/撤消/关闭由HTML设置的事件处理程序。
下面的许多解决方案完全杀死了事件处理程序。但我想在第一次点击后 后停止。
我无法通过“one”方法设置事件。 HTML已经有了onclick事件。
答案 0 :(得分:7)
jQuery的unbind()
和off()
仅适用于通过jQuery分配的事件处理程序,而不适用于通过onclick
属性分配的事件处理程序。
如果要清除该属性,可以这样做:
$("#a1").removeAttr("onclick");
实施,它看起来像这样:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
function Foo() {
var d = new Date();
alert("Hello" + d.getTime());
alert($('#a1').attr('id'));
// remove event handler
$("#a1").removeAttr("onclick");
}
$(document).ready(function() {});
</script>
<input id='a1' type="button" value="foo" onclick="Foo();" />
</body>
</html>
此处的演示演示:http://jsfiddle.net/jfriend00/bQ9Lq/
如果你想要一个只对一次点击活动的事件处理程序,那么你可能想用jQuery的.one()
(而不是使用onclick)来安装原始事件处理程序,这将在它触发后自动删除事件处理程序一次,您甚至不必编写代码来删除它。
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
$("#a1").one("click", function() {
var d = new Date();
alert("Hello" + d.getTime());
alert($('#a1').attr('id'));
});
});
</script>
<input id='a1' type="button" value="foo" />
</body>
</html>
答案 1 :(得分:0)
因为您使用的是内联事件处理程序,所以只需删除onclick属性
即可function Foo() {
d = new Date();
alert("Hello" + d.getTime());
alert($('#a1').attr('id'));
$('#a1').removeAttr("onclick");
}
答案 2 :(得分:0)
你没有与jQuery
绑定,所以与jQuery取消绑定而不是与javascript解绑,你需要索引或get()
<强> Live Demo 强>
$('#a1')[0].onclick = null;
或
$('#a1').get(0).onclick = null;;
您可以使用attr()
<强> Live Demo 强>
$('#a1').attr("onclick", "");
答案 3 :(得分:-1)
试试这个
$(document).ready(function() {
$( "#a1" ).bind( "click", function() {
d = new Date();
alert("Hello" + d.getTime());
alert($('#a1').attr('id'));
$('#a1').unbind("click");
});
});
<input id='a1' type="button" value="foo" />