[英]what's wrong with this function (the testFunction)
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<title>test</title>
<style type="text/css">
.button_test{
border-radius: 4px;
padding: 4px;
cursor: pointer;
background-color:#999;
}
</style>
</head>
<body>
<span class="button_test">debug</span>
<script type="text/javascript">
var testFunction = function(_callback){
$(".button_test").click(function(){
if ("function"==typeof(_callback)) {
_callback();
};
})
}
testFunction(function(){
console.log(111);
});
</script>
</body>
</html>
该功能testFunction已被使用一次,所以我想,当我clcik $(".button_test")
在第一时间,控制台将输出111那么无论有多少次点击$(".button_test")
时,控制台将不会输出任何内容。
但是,实际上,每次单击$(".button_test")
,控制台都会输出111。
Click不会一次运行事件,而是在事件发生时每运行一次。 停止它的唯一方法是取消绑定该事件或在其中添加一个标志以表示未运行。 但是有更好的方法,因为jQuery有一种方法可以运行一次事件,那就是one()
一()
.one( events [, data ], handler(eventObject) )
返回:jQuery
说明:将处理程序附加到元素的事件。 每个事件类型的每个元素最多只能执行一次处理程序。
您的代码可以像这样使用它
var testFunction = function(_callback){
$(".button_test").one("click", function(){
if ("function"==typeof(_callback)) {
_callback();
};
})
}
testFunction(function(){
console.log(111);
});
这不是testfunction
是附加到.button_test
的单击处理程序,但执行该匿名函数console.log(111)
没有什么变化上单击处理.button_test
您运行一次后testfunction
,使按键继续执行console.log(111)
每次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.