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

jQuery API 2.2.0

.toggle()

分类:建议弃用 > 建议弃用于1.8 | 事件 > 鼠标事件 | 已删除

返回: jQuery
弃用于:1.8,删除于:1.9

.toggle( handler, handler [, handler ] )

描述:把两个或更多的处理函数绑定到匹配的元素上,当交替点击的时候执行它们。

加入于: 1.0
.toggle( handler, handler [, handler ] )
  • handler
    类型:FunctionEvent eventObject )
    一个函数,当元素偶数次被点击时执行它。
  • handler
    类型:FunctionEvent eventObject )
    一个函数,当元素奇数次被点击时执行它。
  • handler
    类型:FunctionEvent eventObject )
    更多的在点击之后周期性轮流执行的函数。

注意:这个方法在jQuery 1.8中被建议弃用,在jQuery 1.9中被删除。jQuery还提供了一个名为.toggle()的动画方法,会切换元素的可视性。到底是引发动画,还是一个事件处理方法,取决于传递给它的参数集合。

.toggle()方法把一个处理函数绑定到click事件上了,因此针对click事件触发的规则也应用在这里了。

举个例子,设想下面的HTML:

<div id="target">
  Click here
</div>

然后可以在div上绑定事件处理函数:

$( "#target" ).toggle(function() {
  alert( "First handler for .toggle() called." );
}, function() {
  alert( "Second handler for .toggle() called." );
});

随着反复点击这个元素,两条消息交替出现:

First handler for .toggle() called. Second handler for .toggle() called. First handler for .toggle() called. Second handler for .toggle() called. First handler for .toggle() called.

如果提供了不止两个处理函数,.toggle()会在几个函数之间循环。举个例子,如果有三个处理函数,第一次点击、第四次点击、第七次点击时调用第一个处理函数,依此类推。

提供 .toggle()方法是为了方便。这是用比较简单的手工实现相同的行为,并且这可能是必要的,如果构建到.toggle()的代码被证明是有局限性的。举个例子,如果对同一个元素应用两次,.toggle()不能保证正确的起作用。因为.toggle()内部的使用了一个click处理函数来做它的工作,我们必须解绑click以删除用.toggle附加的行为,因此别的click处理函数会在交叉引发中被捕获。编译器还在该事件上调用了.preventDefault(),因此如果在元素上调用了.toggle(),就会导致不能打开链接、不能点击按钮。

示例

在表格单元格中切换样式。(不建议这么做,请使用.toggleClass()来代替):

$( "td" ).toggle(
  function() {
    $( this ).addClass( "selected" );
  }, function() {
    $( this ).removeClass( "selected" );
  }
);

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

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