toggleClass(class)
说明:如果存在(不存在)就删除(添加)一个类。
如果匹配元素集合中元素没有使用样式‘class’则对该元素加入样式‘class’;如果已经使用该样式,则从该元素中删除该样式。
1 |
$("div").toggleClass("highlight"); |
点击div元素后,如果匹配div元素集合中包含样式‘highlight’则删除该样式,没有包含‘highlight’样式则增加该样式
下面是jQuery1.2.6中toggleClass的源码:
01 |
function (value, stateVal) { |
02 |
var type = typeof value, |
03 |
isBool = typeof stateVal === "boolean"; |
04 |
if (jQuery.isFunction(value)) { |
05 |
return this.each(function (i) { |
06 |
var self = jQuery(this); |
07 |
self.toggleClass(value.call(this, i, self.attr("class"), stateVal), stateVal); |
10 |
return this.each(function () { |
11 |
if (type === "string") { |
15 |
classNames = value.split(rspace); |
16 |
while ((className = classNames[i++])) { |
17 |
state = isBool ? state : !self.hasClass(className); |
18 |
self[state ? "addClass" : "removeClass"](className); |
20 |
} else if (type === "undefined" || type === "boolean") { |
22 |
jQuery.data(this, "__className__", this.className); |
24 |
this.className = this.className || value === false ? "" : jQuery.data(this, "__className__") || ""; |
toggleClass( class, switch )
如果开关switch参数为true则加上对应的class,否则就删除。
返回值:jQuery
参数:
class(String) :要切换的css类名。
switch(Boolean) :用于决定是否切换class的布尔值。
当switch是true时添加类,当switch是false时删除类
我们来看下这个switch的使用方法
每点击三下加上一次 'selected' 类:
jQuery 代码:
2 |
$("p").click(function(){ |
3 |
$(this).toggleClass("highlight", count++ % 3 == 0); |
原来是传入一个表达式来决定是否切换class,因为toggleclass默认是来回切换的,在上面的列子就实现了点击三下才切换class
jquery1.3.2以上的版本toggleClass也可以和addClass一样,用空格分隔多个class名称了
1 |
.toggleClass(“a b”) == .toggleClass(“a”).toggleClass(“b”) |
无参数时,自动删除、恢复全部class,也可以传递一个布尔值,true为恢复class,false为删除class 也可以第一个参数为class名,第二个参数为布尔值,具体用法如下:
04 |
$(‘div’).toggleClass(); |
05 |
$(‘div’).toggleClass(); |
06 |
$(‘div’).toggleClass( false ); |
07 |
$(‘div’).toggleClass( true ); |
09 |
$(‘div’).toggleClass( “a b” ); |
10 |
$(‘div’).toggleClass( “a c” ); |
11 |
$(‘div’).toggleClass( “a b c”, false ); |
12 |
$(‘div’).toggleClass( “a b c”, true ); |
jQuery1.4.2版本还可以传入当前值作为设置函数的第二个参数,供设置函数使用
.toggleClass( function(index, class), [ switch ] )
1 |
$('div.foo').toggleclass(function() { |
2 |
if ($(this).parent().is('.bar') { |
jQuery1.4中的toggleClass可以传入一个函数了,功能更加的强大