概述 .toggle( handler(eventObject), handler(eventObject) [, handler(eventObject) ] )
返回值:jQuery
描述:绑定两个或多个处理程序绑定到匹配的元素,用来执行在交替的点击。
注意: 这个方法在jQuery 1,8中宣告过时,在jQuery 1.9中已经移除;jQuery animation 也有一个名为.toggle()方法。哪一个被调用取决于传递的参数的设置。
.toggle()
方法的处理程序绑定一个click
事件,因此,对于 click
事件适用的规则,同样也适用于该事件。
举例来说,请看下面的HTML:
For example, consider the 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
处理,就会出现麻烦。在 ..toggle()
的实现中,同样调用了 .preventDefault()
,因此,链接将不会被触发。并且,如果已经调用了元素上的 .toggle()
事件,那么,按钮的点击事件也不会被触发。
示例
点击列表项,切换它们的高亮效果。
<!DOCTYPE html>
<html>
<head>
<style>
ul { margin:10px; list-style:inside circle; font-weight:bold; }
li { cursor:pointer; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<ul>
<li>Go to the store</li>
<li>Pick up dinner</li>
<li>Debug crash</li>
<li>Take a jog</li>
</ul>
<script>
$("li").toggle(
function () {
$(this).css({"list-style-type":"disc", "color":"blue"});
},
function () {
$(this).css({"list-style-type":"disc", "color":"red"});
},
function () {
$(this).css({"list-style-type":"", "color":""});
}
);
</script>
</body>
</html>
切换表格的样式:
$("td").toggle( function () { $(this).addClass("selected"); }, function () { $(this).removeClass("selected"); } );