jQuery使用(二):DOM样式操作和属性操作
DOM取值与赋值
- .html()
- .text()
- .size()
1.html()方法类似原生DOM的属性innerHTML,不传入参数的时候默认为取指定元素内的HTML内容,包含前后空白文本结构,以字符串类型返回;当被指定执行html()方法的jQuery对象是一组DOM集合时,获取到的内容是集合中的第一个DOM节点的内容。(html代码在文末)
console.log($('ul').html());
console.log($('ul li').html());
2.html('参数')--带参数的html方法执行表示,向指定元素内添加HTML文档;如果指定的jQuery对象是一组DOM集合,则会执行每个元素节点做添加操作;参数还可以是一个函数,这个函数可以接收两个参数:DOM集合索引、当前元素节点。(html代码在文末)
$('ul').html('hallo!');//文本节点
$('ul').html('<li>我是一个li,我就是我</li>');//元素节点 var arr = ['苹果','橘子','梨子','香蕉','西瓜'];
$('ul li').html(function(index,ele){
return '<p style="color:orange">' + arr[index] + '</p>';
});//给元素集合中的每一个元素添加内部HTML结构内容
3.text()--用来获取,添加,修改元素文本节点。text会将空白文本节点,子节点的所有文本节点全部获取;当执行text()方法的jQuery对象是一个DOM集合时,会将每个DOM节点的文本和其后代文本节点全部返回(这里和html()方法的情况不一样);
text('参数')--带参数的text方法执行表示,向指定元素内添加文本节点,如果调用方法的元素节点原本包含文本节点和元素节点,会被新添加的文本节点覆盖;同时,text()也可以像html()方法一样,参数可以是一个函数,规则与html非常类似。(html代码在文末)
console.log($('ul').text());
console.log($('ul li').text());
$('ul').text('aaaa');
$('ul li').text(function(index,ele){
return arr[index];
});
4.sezi()--size()--用来返回jQuery对象包含DOM节点的长度,与length属性一致。
基于Class的样式操作方法
- .addClass()
- .removeClass()
- .hasClass()
1.addClass()方法用来给指定元素添加类名,参数以字符串和方法两种形式来实现。字符串参数可以一次添加多个类名,以一个字符串中间空格间隔的方式添加;方法参数:类名作为方法的返回值(字符串形式)实现类名添加,方法可以获得两个参数:index,ele;(html代码在文末)
$('div').addClass('duyi one');//给每个div元素添加类名‘duyi’和‘ome’
$('.demo').addClass(function(index,ele){
if(index % 2 == 0){
return 'duyi';
}
return 'active';
});//给类名为demo的元素下标为偶数的添加类名‘duyi’,下标为奇数的添加类名‘active’
2.removeClass()方法用来删除指定元素的指定类名,操作方式跟addClass()一致,直接上代码。(html代码在文末)
$('div').eq(0).removeClass('active');//删除第一个div元素的类名‘active’
$('.demo').removeClass(function(index,ele){
if(index % 2 == 0){
return 'duyi';
}
return 'active';
});//将类名为demo的元素下标为偶数的删除类名‘duyi’,下标为奇数的删除类名‘active’
注意:如果removeClass()方法没有添加参数就表示删除所有类名,空字符和undefined也表示删除全部。
3.hasClass()方法用来判断jQuery对象中是否包含指定类名的元素,如果有就返回true,如果没有就返回false。(html代码在文末)
console.log($('div').hasClass('active'));//true
直接操作行间样式的css()方法
- .css()
css()方法可以将样式和值呈对象属性与值的方式直接写入行间,样式名采用小驼峰写法。
运用这个方法修改样式是绝对不推荐的:
1.行间样式的权重最高,写入后不能再通过其他方式修改样式,只能采用css。(影响维护)
2.通过css写入样式就相当于将样式写在js文件中,js的异步加载特性不利于首屏加载时的渲染树渲染页面;而且对比js文件来说,css会被浏览器缓存,而js不会,所以每一次触发css()方法都需要发送请求,造成大量数据传输资源,而且js中的css样式不具备复用性等效率问题和资源浪费问题。
3.css()方法在jQuery内部的处理比修改类名要复杂的多,而且大多都在操作DOM,会大大消耗计算机的计算资源。(html代码和css代码见文末)
$('.demo').click(function(e){
$('.demo').removeClass('active');//将所有选中的元素删除active类名(删除对应样式)
$(this).addClass('active');//将点中的元素添加上active类名(添加指定样式) //采用css()方法实现切换(不提倡)
// $('.demo').css({backgroundColor:'orange'});
// $(this).css({backgroundColor:'red'}); });//实现样式切换
虽然css()鸡肋,处于认真负责的态度,我还是把它的操作特性做一个完整的介绍吧:
$('.demo').css('width','200px');//通过css()方法修改样式的另一种参数形式
$('.demo').css({width:'+=50px'});//在传入参数的时候还可以附加一些运算,实现复杂的逻辑处理
css()方法用来赋值是真心的鸡肋,但并不带表他就一无是处,我们可以通过css()方法来获取元素指定的样式值,以字符串类型放回该样式值:
console.log($('.demo').css('backgroundColor'));
console.log($('.demo').css('width'));
用一个小demo深入感受类名操作样式:
//css
/*换肤*/
.wrapper .style1{
background-color: orange;
}
.wrapper .style1 li{
color: red;
}
.wrapper .style2{
background-color: blue;
}
.wrapper .style2{
color: green;
} .wrapper.active .style1{
background-color: yellow;
}
.wrapper.active .style1 li{
color: deeppink;
}
.wrapper.active .style2{
background-color: saddlebrown;
}
.wrapper.active .style2{
color: darkcyan;
} //html
<div class="wrapper">
<ul class="style1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<ul class="style2">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div> //jq
$('.wrapper').click(function(ele,index){
if( $(this).hasClass('active')){
$(this).removeClass('active');
}else{
$(this).addClass('active');
}
});
jQuery操作元素属性attr()和prop()方法
- .attr()
- .prop()
1.attr用来获取和设置元素属性。取值:不论是特性还是属性,attr都可以取值,需要注意的是checked这类特性,因为这类特性只要添加无论赋值与否,浏览器都会默认赋值,但是这种赋值所表达的是另一种特性含义,由attr取值只能取到显性的值,并不能取到特性所表达的真正的值。详细看示例;赋值:采用来个参数的方式==>(‘属性名称’,‘值’)。
2.prop用来获取和设置元素特性,prop只能用来操作元素特性,不能操作非特性属性。取值:基本操作与attr一致,但是如果对非特性属性取值会返回undefined;对于checked这类特性取值可以获取到元素的真实特性值;赋值:赋值方式与attr一致。(映射关系)
(html代码见文末)
console.log( $('.attr1').attr('cst') );//‘aa’
console.log( $('input[type="checkbox"]').eq(0).attr('checked') );//checked---真实特性值应该是true
console.log( $('input[type="checkbox"]').eq(1).attr('checked') );//checked---真实特性值应该是true
console.log( $('input[type="checkbox"]').eq(2).attr('checked') );//undefined---真实特性值应该是false $('.attr1').attr('id','01001');//通过attr方法添加id属性并赋值 console.log( $('input[type="checkbox"]').eq(1).prop('checked') );//true
console.log( $('input[type="checkbox"]').eq(2).prop('checked') );//false console.log( $('.attr1').prop('cst') );//undefined
console.log( $('input[type="checkbox"]').eq(0).prop('type') );//checkbox $('input[type="checkbox"]').eq(2).prop('checked','checked');//添加特性
console.log( $('input[type="checkbox"]').eq(2).prop('checked') );//true
这篇博客的所有HTML代码:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul> <div class="demo active"></div>
<div class="demo"></div>
<div class="demo"></div> <div class="wrapper">
<ul class="style1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<ul class="style2">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>
<div class="attr1" cst="aa"></div>
<input type="checkbox" checked="checked">
<input type="checkbox" checked="">
<input type="checkbox">
jQuery使用(二):DOM样式操作和属性操作的更多相关文章
- JQuery DOM操作(属性操作/样式操作/文档过滤)
jQuery——入门(三)JQuery DOM操作(属性操作/样式操作/文档过滤) 一.DOM属性操作 1.属性 (1).attr() 方法 语法:$(selector).attr(name|prop ...
- python 之 前端开发( jQuery选择器、筛选器、样式操作、文本操作、属性操作、文档操作)
11.5 jQuery 引入方式: 方式一:本地引入 <script src="jquery-3.3.1.min.js"></script> <scr ...
- jQuery样式及html属性操作
样式及html属性操作1,行内样式 css(); a:获取样式 元素.css(样式名称); b:设置单个样式 元素.css("样式名称":"样式值"); c:设 ...
- Dom的样式操作和属性操作
如果说web的研究对象是html和css,那么整个dom结构,包含html树和dom树的dom结构才是研究对象,而在整个页面呈现上面,js起到的作用则是异步的用户行为. 按照上面整个思路,获取dom元 ...
- jQuery 样式操作、文档操作、属性操作的方法总结
文档操作: addClass() 向匹配的元素添加指定的类名.after() 在匹配的元素之后插入内容.append() ...
- JavaScrip——DOM操作(属性操作)
Attribute a.setAttribute("属性名","属性值")——设置属性 a.getSttribute("属性名")——获取属 ...
- jQuery捕获-获取DOM元素内容和属性
一.获取内容 1.text()-设置或返回所选元素的文本内容 2.html()-设置或返回所选元素的内容(包括HTML标记) 3.val()-设置或 返回表单字段的值 $(document).read ...
- DOM操作之属性和样式操作
在DOM操作,除了前面的节点操作以外,常常被用到的操作还有属性操作和节点操作,下面,主要来总结一下jQuery中的属性操作方法和样式操作方法. 在开始操作前,我们需要先在html中添加如下代码,后面所 ...
- jquery 学习(二) - 属性操作
html代码 <div class="n1" zdy="z1">AAA <p>1111111</p> <input t ...
随机推荐
- Catch the Theves HDU - 3870(s - t平面图最小割)
题意: 板题...建个图..跑一遍spfa就好了...嘻嘻... 注意..数组大小就好啦..400 * 400 = 1600 我也是抑郁了..沙雕的我.. #include <iostream& ...
- opencv 图片剪切
import cv2 as cv import numpy as np # 图片剪切 img = cv.imread('../images/moon.jpg', flags=1) # flags=1读 ...
- flask报错:werkzeug.routing.BuildError: Could not build url for endpoint 'index'. Did you mean 'single' instead?
错误代码 参考:https://blog.csdn.net/qq_27468251/article/details/81359701 改为
- Configure an PPTP Server on Debian
安装PPTP apt-get update apt-get upgrade apt-get install iptables pptpd vim 设置并修改配置文件vim /etc/pptpd.con ...
- 【CF997E】Good Subsegments (线段树+单调栈)
Description 原题链接 给你一个长度为\(n\)的排列\(~P\),定义一段子区间是好的,当且仅当这个子区间内的值构成了连续的一段.例如对于排列\(\{1,3,2 \}\),\([1, 1] ...
- maven手动安装jar包到本地仓库,以ojdbc6为例
在做mybatis generator的中文注释实现时,感觉每次都要在配置文件中指定ojdbc6的位置太麻烦了,别人用也不方便,没有的还得自己去下,所以就想直接把ojdbc6打包到项目里,这样拿到就可 ...
- ajaxmin.exe 命令参数
这个工具用来压缩JS和CSS文件的,可去掉多余空格,换行,还修改函数名变得难以读取等. 下载这工具,下载之后是一个.msi文件可以安装.安装之后在命令行里操作即可 (下载地址和文档) http://a ...
- unittest单元测试框架中的参数化及每个用例的注释
相信大家和我有相同的经历,在写自动化用例脚本的时候,用例的操作是一样的,但是就是参数不同,比如说要测一个付款的接口,付款有很多种渠道,另外只有部分参数不一样,如果我们一个渠道一个渠道的写,在unitt ...
- HDU 6336 Matrix from Arrays (杭电多校4E)
遇事不决先打表. 然后会发现(个屁)大的矩形是由一个2L*2L的矩形重复出现组成的然后我们就可以这个矩形分成四个点到(0, 0)点的矩形,这样问题就变成了求四个到顶点(0, 0)的矩形的面积,然后就先 ...
- BZOJ5093图的价值(斯特林数)
题目描述 “简单无向图”是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简单无向图的价值之和. 因为答案很大,请对 ...