.toggle()
分类:建议弃用 > 建议弃用于1.8 | 事件 > 鼠标事件 | 已删除
描述:把两个或更多的处理函数绑定到匹配的元素上,当交替点击的时候执行它们。
注意:这个方法在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" ); } );