加载中...

one()


概述    .one( events [, data ], handler(eventObject) )

返回值:jQuery

描述:为元素的事件添加处理函数。处理函数在每个元素上每种事件类型最多执行一次。

  • V : 1.1.one( events [, data ], handler(eventObject) )

    • events
      类型: String
      一个包含一个或多个JavaScript事件类型的字符串,比如“click”或“submit”,或自定义的事件名称。
    • data
      类型: PlainObject
      一个对象,它包含的数据键值对映射将被传递给事件处理程序。
    • handler(eventObject)
      类型: Function()
      每次事件触发时会执行的函数。
  • V : 1.7.one( events [, selector ] [, data ], handler(eventObject) )

    • events
      类型: String
      一个或多个空格分隔的事件类型和可选的命名空间,或仅仅是命名空间,比如"click", "keydown.css88", 或者 ".myPlugin"。
    • selector
      类型: String
      ,一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素。如果选择器是null或被省略,那么被选中的元素总是能触发事件。
    • data
      类型: Anything
      当一个事件被触发时,要传递给事件处理函数的event.data
    • handler(eventObject)
      类型: Function()
      事件被触发时,执行的函数。若该函数只是要执行return false的话,那么该参数位置可以直接简写成 false
  • V : 1.7.one( events [, selector ] [, data ] )

    • events
      类型: PlainObject
      一个映射,键是由一个或多个由空格分隔的事件类型及可选的名字空间,值是这些事件类型所对应的事件处理函数。
    • selector
      类型: String
      ,一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素。如果选择器是null或被省略,那么被选中的元素总是能触发事件。
    • data
      类型: Anything
      当一个事件被触发时,要传递给事件处理函数的event.data

.one().on()是相同的, 不同之处在于,对于给定的元素和事件类型,处理程序在第一次触发事件后会被立即解除绑定,举个示例:

  1. $( "#foo" ).one( "click", function() {
  2. alert( "This will be displayed only once." );
  3. });

在代码执行后,点击id为foo的元素将显示警报。之后再在该元素上点击时,就不会再触发该事件。此代码是等效于:

  1. $( "#foo" ).on( "click", function( event ) {
  2. alert( "This will be displayed only once." );
  3. $( this ).off( event );
  4. });

换句话说,在一个普通的事件绑定处理函数中,显式的调用 .off()和该方法的作用是一样的。

如果该方法的第一个参数包含多个用空格分隔的事件类型的话,那么每种类型的事件被触发时,处理函数仅会被每个事件类型调用一次

  1. $( "#foo" ).one( "click mouseover", function() {
  2. alert( "The " + event.type + " event happened!" );
  3. });

在上面的示例中,由于两个事件类型(clickmouseover),alert可以显示两次。

示例

实例

为每个 div 绑定一次性 click 事件。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div { width:60px; height:60px; margin:5px; float:left;
  6. background:green; border:10px outset;
  7. cursor:pointer; }
  8. p { color:red; margin:0; clear:left; }
  9. </style>
  10. <script src="http://code.jquery.com/jquery-latest.js"></script>
  11. </head>
  12. <body>
  13. <div></div>
  14. <div></div>
  15. <div></div>
  16. <div></div>
  17. <div></div>
  18. <p>Click a green square...</p>
  19. <script>
  20. var n = 0;
  21. $("div").one("click", function() {
  22. var index = $("div").index(this);
  23. $(this).css({
  24. borderStyle:"inset",
  25. cursor:"auto"
  26. });
  27. $("p").text("Div at index #" + index + " clicked." +
  28. " That's " + ++n + " total clicks.");
  29. });
  30. </script>
  31. </body>
  32. </html>

运行一下

实例

在每个段落上第一次点击时,显示该段落的内容:

  1. $("p").one("click", function(){
  2. alert( $(this).text() );
  3. });

实例

处理函数在每个元素上每种事件类型只执行一次。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>one demo</title>
  6. <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  7. </head>
  8. <body>
  9. <div class="count">0</div>
  10. <div class="target">Hover/click me</div>
  11. <script>
  12. var n = 0;
  13. $(".target").one("click mouseenter", function() {
  14. $(".count").html(++n);
  15. });
  16. </script>
  17. </body>
  18. </html>

运行一下


还没有评论.