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

jQuery API 2.2.0

.undelegate()

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

返回: jQuery

.undelegate()

描述:针对所有匹配当前选择器的元素,从事件上删除一个处理函数。匹配元素基于一个特定的根元素集合。

加入于: 1.4.2
.undelegate()

该签名不接受任何参数。

加入于: 1.4.2
.undelegate( selector, eventType )
  • selector
    类型:String
    一个选择器,它用来筛选事件结果。
  • eventType
    类型:String
    一个字符串,它包含了一个JavaScript事件对象,比如说click或者keydown
加入于: 1.4.2
.undelegate( selector, eventType, handler )
  • selector
    类型:String
    一个选择器,它用来筛选事件结果。
  • eventType
    类型:String
    一个字符串,它包含了一个JavaScript事件对象,比如说click或者keydown
  • handler
    类型:FunctionEvent eventObject )
    一个函数,在事件触发时执行它。
加入于: 1.4.3
.undelegate( selector, events )
  • selector
    类型:String
    一个选择器,它用来筛选事件结果。
  • events
    类型:PlainObject
    一个对象,它是一个或多个事件类型,以及先前绑定到这个事件上的函数,现在要解除对它们的绑定。
加入于: 1.6
.undelegate( namespace )
  • namespace
    类型:String
    一个字符串,包含了要解除绑定的事件的命名空间。

.undelegate()方法是一个删除事件处理函数的方式,这些事件处理函数是先前用.delegate()方法绑定的。自从jQuery 1.7,.on()方法和.off()方法优先附加事件处理函数、优先删除事件处理函数。

示例

可以向彩色按钮绑定事件并解除绑定事件。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>undelegate demo</title>
  <style>
  button {
    margin: 5px;
  }
  button#theone {
    color: red;
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<button id="theone">Does nothing...</button>
<button id="bind">Bind Click</button>
<button id="unbind">Unbind Click</button>
<div style="display:none;">Click!</div>
 
<script>
function aClick() {
  $( "div" ).show().fadeOut( "slow" );
}
$( "#bind" ).click(function() {
  $( "body" )
    .delegate( "#theone", "click", aClick )
    .find( "#theone" ).text( "Can Click!" );
});
$( "#unbind" ).click(function() {
  $( "body" )
    .undelegate( "#theone", "click", aClick )
    .find( "#theone" ).text( "Does nothing..." );
});
</script>
 
</body>
</html>

演示结果

要想从所有的段落文本上解除所有的委托事件,只要这么写:

$( "p" ).undelegate();

要想从所有段落文本上解除所有的click委托事件,只要这么写:

$( "p" ).undelegate( "click" );

要想解除委托先前绑定的处理函数,只要向提供一个函数,作为第三个参数:

var foo = function () {
  // 处理某些事件的代码
};
 
// ... 现在当点击段落文本时会调用foo ...
$( "body" ).delegate( "p", "click", foo );
 
// ... foo will no longer be called.
$( "body" ).undelegate( "p", "click", foo );

利用委托事件的命名空间来解除绑定所有的委托事件。

var foo = function() {
  // 处理某些事件的代码
};
 
// Delegate events under the ".whatever" namespace
$( "form" ).delegate( ":button", "click.whatever", foo );
 
$( "form" ).delegate( "input[type='text'] ", "keypress.whatever", foo );
 
// Unbind all events delegated under the ".whatever" namespace
$( "form" ).undelegate( ".whatever" );

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

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