深入学习jQuery样式操作【www.129028.com金沙】,深入学习jquery样式

日期:2020-05-07编辑作者:Web前端

时间: 2019-09-07阅读: 108标签: 函数内容目录

深入学习jQuery样式操作,深入学习jquery样式

×

toggleClass()函数用于切换当前jQuery对象所匹配的每一个元素上指定的css类名。

目录

[1]设置样式 [2]增加样式 [3]删除样式[4]切换样式[5]判断样式[6]样式操作

所谓"切换",就是如果该元素上已存在指定的类名,则移除掉;如果不存在,则添加该类名。

前面的话

  使用javascript脚本化CSS是一个系列,包括行间样式、计算样式、CSS类、样式表、动态样式和伪元素这六部分。而jQuery也实现了脚本化CSS的功能,提供了更为简单易用的方法

 

该方法检查每个元素中指定的类。如果不存在则添加类,如果已设置则删除之。这就是所谓的切换效果。

设置样式

  前面介绍过jQuery的特性操作,可以通过attr()方法进行样式设置

<style>
.cB{color: blue;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test').attr('class','cB')
}
</script>

  [注意]jQuery对象无法直接使用className属性设置类名,需要转换为javascript对象才可以使用

<style>
.cB{color: blue;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test')[0].className = 'cB';
}
</script>

 

通过使用 "switch" 参数,能够规定只删除或只添加类。

增加样式

addClass(className)

  addClass(className)方法为每个匹配元素增加一个或多个样式名,如果值已存在,则不添加 

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test').addClass('cB bgO')
}
</script>

addClass(function(index, currentClass))

  addClass()方法可以接受一个函数作为参数,这个函数返回一个或更多用空格隔开的要增加的样式名。接收index参数表示元素在匹配集合中的索引位置和currentClass参数表示元素上原来的className。在函数中this指向匹配元素集合中的当前元素

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test').addClass(function(index,currentClass){
        alert('' + index + currentClass );//'0cB'
        return 'bgO';
    })
}
</script>

该函数属于jQuery对象(实例)。

删除样式

removeClass()

  removeClass()方法不带参数时,将删除全部类名

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test').removeClass();
}
</script>

removeClass([className])

  removeClass([className])方法用来删除参数中指定的一个或多个类名

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test').removeClass('cB bgO');
}
</script>

removeClass(function(index, currentClass))

  removeClass()方法可以接收一个函数为参数,该函数返回一个或多个将要被移除的样式名。index参数表示在所有匹配元素的集合中当前元素的索引位置,currentClass参数表示原有的样式名

  [注意]由于class是保留字,所以形参名设置为class时,会导致错误

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test').removeClass(function(index,currentClass){
        alert('' + index + currentClass);//0cB bgO
        return 'bgO';
    });
}
</script>

语法

切换样式

toggleClass()

  在做某些效果的时候,可能会针对同一节点的某一个样式不断的切换,也就是addClass与removeClass的互斥切换,比如隔行换色效果

  jQuery提供一个toggleClass()方法用于简化这种互斥的逻辑,通过toggleClass()方法动态添加删除Class,一次执行相当于addClass,再次执行相当于removeClass

  toggleClass()有以下4种用法

【1】toggleClass()

  当toggleClass()方法没有参数时,将删除或还原全部类名

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test').toggleClass();
}
</script>    

【2】toggleClass(className)

  toggleClass(className)方法在匹配的元素集合中的每个元素上切换的一个或多个(用空格隔开)样式类名

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
    $('#test').toggleClass('bgO');
}
</script>

【3】toggleClass(className,switch)

  toggleClass()方法可以接收第二个参数switch,用来判断样式类是否应该被添加或删除。如果这个参数的值是true,那么这个样式类将被添加,相当于addClass;如果这个参数的值是false,那么这个样式类将被移除,相当于removeClass

$('#foo').toggleClass(className, addOrRemove);
//等价于
if (addOrRemove){
    $('#foo').addClass(className);
}else{
    $('#foo').removeClass(className);
}

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">添加</button>
<button id="btn2">删除</button>
<script>
btn1.onclick = function(){$('#test').toggleClass('bgO',true);}
btn2.onclick = function(){$('#test').toggleClass('bgO',false);}
</script>

【4】toggleClass(function(index,currentClass,switcher)[,switch])

  toggleClass()可以接收一个函数作为参数,该函数用来返回在匹配的元素集合中的每个元素上用来切换的样式类名,接收元素的索引位置和元素旧的样式类作为参数 

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">添加</button>
<button id="btn2">删除</button>
<button id="btn3">变更</button>
<script>
btn1.onclick = function(){$('#test').toggleClass(function(index,currentClass,switcher){
    alert('' + index + currentClass + switcher)
    return 'bgO'
},true)};
btn2.onclick = function(){$('#test').toggleClass(function(index,currentClass,switcher){
    alert('' + index + currentClass + switcher)
    return 'bgO'
},false)};
btn3.onclick = function(){$('#test').toggleClass(function(index,currentClass,switcher){
    alert('' + index + currentClass + switcher)
    return 'bgO'
})};
</script>

toggleClass()函数的用法比较复杂,其主要有以下两种用法:

判断样式

hasClass(className)

  hasClass(className)方法用于确定任何一个匹配元素是否有被分配给定的类名,如果有则返回true;否则,返回false

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<button id="btn2">是否存在指定样式</button>
<script>
btn1.onclick = function(){$('#test').toggleClass('bgO');}
btn2.onclick = function(){alert($('#test').hasClass('bgO'))}
</script>

  [注意]该方法实际是为了增强代码可读性产生的。在jQuery()内部实际上是调用了is()方法来完成这个功能的

  在javascript中,HTML5为所有元素添加了classList属性,这个classList属性是新集合类型DOMTokenList的实例,它也有类似的方法

add(value)              将给定的字符串值添加到列表中,如果值已存在,则不添加
contains(value)         表示列表中是否存在给定的值,如果存在则返回true,否则返回false
remove(val,e)          从列表中删除给定的字符串
toggle(value)           如果列表中已经存在给定的值,删除它;如果列表中没有给定的值,添加它

  由于IE9-浏览器不支持classList属性,也就不支持add()、contains()、remove()和toggle()这四个方法

  关于classList属性的类似的4个方法及兼容写法的详细信息移步至此

 

用法一

样式操作

  在javascript中,查询计算样式需要处理getComputedStyle()方法和currentStyle属性的兼容;设置行间样式需要对style属性赋值

  而在jQuery中,使用CSS()方法就可以解决以上的问题

【获取样式】

css(propertyName)

  css(propertyName)方法用来获取匹配元素集合中的第一个元素的样式属性的计算值

<style>
div { width:60px; height:60px; margin:5px; float:left; }
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>

<div style="background-color:blue;"></div>
<div style="background-color:rgb(15,99,30);"></div>
<div style="background-color:#123456;"></div>
<div style="background-color:#f11;"></div>
<script>
$("div").click(function () {
  $("#result").html("背景颜色是 " + $(this).css("background-color"));
});
</script>

  [注意]简写速写的CSS属性(如:margin,background,border)不支持

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="margin-top:10px;">测试文字</div>
<script>
//chrome浏览器输出10px 0px 0px
//firefox和IE浏览器输出空字符串''
console.log( $('#test').css('margin'));
</script>

css(propertyNames)

  css(propertyNames)方法也可以接受一个或多个CSS属性组成的数组作为参数

  从jQuery 1.9开始, 传递一个CSS的样式属性的数组给.css()将返回属性-值配对的对象

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="margin-top:10px;">测试文字</div>
<script>
//{width: "1904px", height: "18px", font-size: "16px"}
console.log( $('#test').css(['width','height','font-size']));
</script>

【设置样式】

css(propertyName,value)

  可以通过css(propertyName,value)方法进行样式设置

  [注意]从jQuery1.6开始,css()接受类似于animate()的相对值。相对值时以+=或者-=开头的字符串,表示递增或递减当前的值。如果一个元素的左padding是10px,.css( "padding-left", "+=15" )将返回总的左padding为25px

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="width:100px;background-color:grey">测试文字</div>
<script>
$('#test').mouseover(function(){
    $(this).css('color','red');
    $(this).css('width','+=100');
})
$('#test').mouseout(function(){
    $(this).css('color','green');
    $(this).css('width','-=100');
})
</script>

css(properties)

  css()方法设置样式时,允许以一个属性-值配对的对象作为参数

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="width:100px;background-color:grey">测试文字</div>
<script>
$('#test').mouseover(function(){
    $(this).css({'color':'red','width':'+=100'});
})
$('#test').mouseout(function(){
    $(this).css({'color':'green','width':'-=100'});
})
</script>

www.129028.com金沙,  [注意]css()方法支持驼峰写法与中划线写法,内部做了容错的处理

  在驼峰写法中,属性名可以不使用引号包裹;但是在中划线写法中,必须用引号包裹

.css({'background-color': '#ffe', 'border-left': '5px solid #ccc'}) 
//等价于
.css({backgroundColor: '#ffe', borderLeft: '5px solid #ccc'})

css(propertyName,function(index, value))

  通过css()方法设置样式时,第二个参数可以是一个函数,this指向当前元素,index参数表示元素在匹配集合中的索引位置,html参数表示元素上原来的HTML内容。函数返回设置的值 

  [注意]当一个数只被作为值(value)的时候,jQuery会将其转换为一个字符串,并添在字符串的结尾处添加px,例如.css("width",50})与.css("width","50px"})一样

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="width:100px;background-color:grey">测试文字</div>
<script>
$('#test').mouseover(function(){
    $(this).css({width:function(index ,value){
        return parseFloat(value) * 1.2;
    },color: 'red'
});
})
$('#test').mouseout(function(){
    $(this).css({width:function(index ,value){
        return parseFloat(value) / 1.2;
    },color: 'green'});
})
</script>

删除样式

  使用css()方法也可以删除样式,当css()方法的样式属性的值为空字符串时,会从元素上移除该样式(若该属性存在的话)

  [注意]IE8-浏览器中,删除的简写属性,如border或background将完全删除该元素样式,不管是在样式表或<style>元素中

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<style>
div{border-left:3px solid black;}
</style>
<body>
<div id="test" style="border-left:3px solid green;">内容</div>
<script>
$('#test').click(function(){
    $(this).css('border','');
})
</script>

http://www.bkjia.com/jQuery/1162335.htmlwww.bkjia.comtruehttp://www.bkjia.com/jQuery/1162335.htmlTechArticle深入学习jQuery样式操作,深入学习jquery样式 目录 [1]设置样式 [2]增加样式 [3]删除样式[4]切换样式[5]判断样式[6]样式操作 前面的话 使用jav...

// 参数类型( string )是 v 1.0的用法// 参数类型( string, boolean )是 v 1.3新增用法// 参数类型( function [, boolean] )是 v 1.4 新增用法jQueryObject.toggleClass( classNames [, switch ] )

切换指定的css类名classNames。如果存在指定的类名,则移除该类名;如果存在,则添加该类名。参数switch用于指定是只添加还是只移除指定的css类名。

用法二:jQuery1.4 新增该用法。

jQueryObject.toggleClass( [ switch ] )

只要该元素有css类名,或者switch参数为false,toggleClass()将移除该元素所有的css类名。否则(其他任何情况),都会将元素的class属性重置为最近一次调用toggleClass()函数(必须是该用法)时的有效class属性值("有效"意即不为空)。如果没有有效的class属性值,则重置class属性为空字符串。

注意:toggleClass()会"切换"当前jQuery对象所匹配的每一个元素上指定的css类名。

参数

本文由www.129028.com金沙发布于Web前端,转载请注明出处:深入学习jQuery样式操作【www.129028.com金沙】,深入学习jquery样式

关键词:

[译]优秀的前端开发者为什么难找(Why is it so hard to find a go

时间: 2019-09-10阅读: 165标签: 开发者 原作者: Ilias Ismanalijev 这是一个合理的问题。对外行而言,前端开发一定看起来...

详细>>

node.js含有%百分号时,发送get请求时浏览器地址自动编码的问题

时间: 2019-09-09阅读: 193标签:请求目前浏览器会对地址,进行编码,比如这个文件名: sales报表.png 在发到后台时,会自...

详细>>

d3.js制作连线动画图和编辑器www.129028.com金沙

时间: 2019-09-06阅读: 109标签:d3本项目使用主要d3.jsv4制作,分两部分,一个是实际展示的连线动画图,另一个是管理人...

详细>>

深入理解定时器系列第二篇——被誉为神器的requestAnimationFrame

时间: 2019-09-09阅读: 127标签: 动画 前面的话 与 setTimeout 和 setInterval 不同,requestAnimationFrame不需要设置时间间隔。这有...

详细>>