.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" );
}
);