.one()
返回: jQuery
.one( events [, data ], handler )
描述:把一个处理函数附加元素的某个事件上。每个元素每种事件类型,该处理函数最多只执行一次。
加入于: 1.1
.one( events [, data ], handler )- events类型:String一个字符串,包含了一个或多个JavaScript事件类型,比如说“click”或者“submit”,或者自定义的事件名。
- data类型:PlainObject一个对象,它包含了要传递给事件处理函数的数据。
- handler一个函数,在事件触发时执行它。
加入于: 1.7
.one( events [, selector ] [, data ], handler )- events类型:String一个或更多的用空格分隔的事件类型以及可选的命名空间,比如说“click”或者“keydown.myPlugin”。
- selector类型:String一个选择器字符串,用来筛选选中的元素触发事件的后代元素。如果选择器是null或者被省略掉了,将会在事件抵达选中的元素时调用处理函数。
- data类型:Anything当一个事件被触发时,在
event.data中传递给处理函数的数据。 - handler一个函数,在触发事件时执行它。值false还允许作为一个只做
return false的函数的简写。
加入于: 1.7
.one( events [, selector ] [, data ] )- events类型:PlainObject一个对象,在其中,字符吕键代表一个或多个用空格隔开的事件类型,以及可选的命名空间,而值代表针对这些事件所调用的处理函数。
- selector类型:String一个选择器字符串,用来筛选选中的元素的将要调用处理函数的后代元素。如果选择器是null或者被省略了,将会在事件抵达选中的元素时调用处理函数。
- data类型:Anything当一个事件发生时,在
event.data中传递给处理函数的数据。
.one()方法与.on()方法完全相同,除了处理函数会在它第一次调用之后被解除绑定。举个例子:
$( "#foo" ).one( "click", function() {
alert( "This will be displayed only once." );
});
执行代码之后,在id="foo"这个元素上点击一次,会显示这个提醒。再继续点击,则不会做任何事情。这个代码等同于:
$( "#foo" ).on( "click", function( event ) {
alert( "This will be displayed only once." );
$( this ).off( event );
});
换句话说,从一个规则绑定的处理函数内部显式地调用.off()具有同样的效果。
如果第一个参数,包含了不止一个事件类型,用空格隔开,则事件处理函数对每种事件类型各调用一次。
示例
向每个div绑定一个一次性点击。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>one demo</title>
<style>
div {
width: 60px;
height: 60px;
margin: 5px;
float: left;
background: green;
border: 10px outset;
cursor:pointer;
}
p {
color: red;
margin: 0;
clear: left;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<p>Click a green square...</p>
<script>
var n = 0;
$( "div" ).one( "click", function() {
var index = $( "div" ).index( this );
$( this ).css({
borderStyle: "inset",
cursor: "auto"
});
$( "p" ).text( "Div at index #" + index + " clicked." +
" That's " + (++n) + " total clicks." );
});
</script>
</body>
</html>