.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>