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 ...
随机推荐
- 【XSY1602】安全网络 树形DP 数学
题目大意 有一颗树,要为每个节点赋一个值\(l_i\leq a_i\leq r_i\),使得任意相邻的节点互素.然后对每个节点统计\(a_i\)在所有可能的情况中的和. \(n\leq 50,1\le ...
- 【XSY1294】sub 树链剖分
题目描述 给你一棵\(n\)个点的无根树,节点\(i\)有权值\(v_i\).现在有\(m\)次操作,操作有如下两种: \(1~x~y\):把\(v_x\)改成\(y\). \(2\):选择一个连通块 ...
- 微信小程序避坑指南
如果对小程序还不熟悉,建议先看下另一篇小程序简介 1. 基础库和微信版本对应关系 iOS 客户端版本 基础库版本 6.7.2 2.3.0 6.7.0 2.2.5 6.6.7 2.1.3 6.6.6 2 ...
- Hdoj 1846.Brave Game 题解
Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中 ...
- python实用脚本集
iScript 是Github上 PeterDing 大神写的一个脚本集,由多数的 python 脚本和少数GM脚本组成. 含有以下几个脚本: xiami.py - 下载或播放高品质虾米音乐(xiam ...
- 【拓扑排序】烦人的幻灯片(slides)
1395:烦人的幻灯片(slides) 时间限制: 1000 ms 内存限制: 65536 KB提交数: 753 通过数: 416 [题目描述] 李教授将于今天下午作一次非常重 ...
- Centos 6.x/7.x yum安装php5.6.X
鉴于Centos 默认yum源的php版本太低了,手动编译安装又有点一些麻烦,那么如何采用Yum安装的方案安装最新版呢.那么,今天我们就来学习下如何用yum安装php最新版. 1.检查当前安装的PHP ...
- 51nod1079 poj2891 中国剩余定理与其扩展
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1079 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K. ...
- 关于angular1与angular2的应用区别
angular1.0的这些繁杂的api,还有它的执行速度,运行效率,学习曲线,都被人吐槽,最近一直在用ng1,实在很想吐槽. 最近写ng2的项目,写了一些ng2基础的应用(包括angular-cli, ...
- 关于windows下NODE_ENV=test无效的情况解决办法
redux的单元测试命令为 NODE_ENV=test mocha --recursive --compilers js:babel-core/register --require ./test/se ...