.one()| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

.one()

分类:事件 > 事件处理附加物

返回: jQuery

.one( events [, data ], handler )

描述:把一个处理函数附加元素的某个事件上。每个元素每种事件类型,该处理函数最多只执行一次。

加入于: 1.1
.one( events [, data ], handler )
  • events
    类型:String
    一个字符串,包含了一个或多个JavaScript事件类型,比如说“click”或者“submit”,或者自定义的事件名。
  • data
    类型:PlainObject
    一个对象,它包含了要传递给事件处理函数的数据。
  • handler
    类型:FunctionEvent eventObject )
    一个函数,在事件触发时执行它。
加入于: 1.7
.one( events [, selector ] [, data ], handler )
  • events
    类型:String
    一个或更多的用空格分隔的事件类型以及可选的命名空间,比如说“click”或者“keydown.myPlugin”。
  • selector
    类型:String
    一个选择器字符串,用来筛选选中的元素触发事件的后代元素。如果选择器是null或者被省略掉了,将会在事件抵达选中的元素时调用处理函数。
  • data
    类型:Anything
    当一个事件被触发时,在event.data中传递给处理函数的数据。
  • handler
    类型:FunctionEvent eventObject )
    一个函数,在触发事件时执行它。值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>

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/one.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。