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样式操作和属性操作的更多相关文章

  1. JQuery DOM操作(属性操作/样式操作/文档过滤)

    jQuery——入门(三)JQuery DOM操作(属性操作/样式操作/文档过滤) 一.DOM属性操作 1.属性 (1).attr() 方法 语法:$(selector).attr(name|prop ...

  2. python 之 前端开发( jQuery选择器、筛选器、样式操作、文本操作、属性操作、文档操作)

    11.5 jQuery 引入方式: 方式一:本地引入 <script src="jquery-3.3.1.min.js"></script> <scr ...

  3. jQuery样式及html属性操作

    样式及html属性操作1,行内样式 css(); a:获取样式 元素.css(样式名称); b:设置单个样式 元素.css("样式名称":"样式值"); c:设 ...

  4. Dom的样式操作和属性操作

    如果说web的研究对象是html和css,那么整个dom结构,包含html树和dom树的dom结构才是研究对象,而在整个页面呈现上面,js起到的作用则是异步的用户行为. 按照上面整个思路,获取dom元 ...

  5. jQuery 样式操作、文档操作、属性操作的方法总结

    文档操作: addClass()             向匹配的元素添加指定的类名.after()                    在匹配的元素之后插入内容.append()         ...

  6. JavaScrip——DOM操作(属性操作)

    Attribute a.setAttribute("属性名","属性值")——设置属性 a.getSttribute("属性名")——获取属 ...

  7. jQuery捕获-获取DOM元素内容和属性

    一.获取内容 1.text()-设置或返回所选元素的文本内容 2.html()-设置或返回所选元素的内容(包括HTML标记) 3.val()-设置或 返回表单字段的值 $(document).read ...

  8. DOM操作之属性和样式操作

    在DOM操作,除了前面的节点操作以外,常常被用到的操作还有属性操作和节点操作,下面,主要来总结一下jQuery中的属性操作方法和样式操作方法. 在开始操作前,我们需要先在html中添加如下代码,后面所 ...

  9. jquery 学习(二) - 属性操作

    html代码 <div class="n1" zdy="z1">AAA <p>1111111</p> <input t ...

随机推荐

  1. 以计算斐波那契数列为例说说动态规划算法(Dynamic Programming Algorithm Overlapping subproblems Optimal substructure Memoization Tabulation)

    动态规划(Dynamic Programming)是求解决策过程(decision process)最优化的数学方法.它的名字和动态没有关系,是Richard Bellman为了唬人而取的. 动态规划 ...

  2. 【XSY2469】graph 分治 并查集

    题目大意 给你一张\(n\)个点\(m\)条边的无向图,问删去每个点后,原图是不是二分图. \(n,m\leq 100000\) 题解 一个图是二分图\(\Longleftrightarrow\)该图 ...

  3. hdu 1540 Tunnel Warfare(Treap)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540 思路:三种操作: D摧毁一个点 R重建最晚被修改的那个点 Q询问点x联通的点有多少个 逆向思维,D操 ...

  4. urllib的实现---请求响应and请求头处理

    在python3中 urllib库和urilib2库合并成了urllib库..其中urllib2.urlopen()变成了urllib.request.urlopen()urllib2.Request ...

  5. django从零开始-模型

    1.设置统计表 配置models.py from django.db import models # Create your models here. # 发布会 class Event(models ...

  6. c# double decimal

    两种类型 double范围比decimal大,精度比之低 类型 大致范围 精度 .NET Framework 类型 double ±5.0 × 10−324 到 ±1.7 × 10308 15 到 1 ...

  7. js 时间类函数

    js 时间类是  Date() var currtime = new Date();// 实例一个时间,是当前时间 接收一个时间戳为参数 var time2=new Date(currtime.get ...

  8. BZOJ 2839: 集合计数 解题报告

    BZOJ 2839: 集合计数 Description 一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得 它们的交集的 ...

  9. Nginx+Tomcat-cluster构建

    -----------ReProxy-------------------------Client-----------192.168.56.202 nginx 192.168.56.200 Tomc ...

  10. Python3 与 C# 并发编程之~ 线程篇

      2.线程篇¶ 在线预览:https://github.lesschina.com/python/base/concurrency/3.并发编程-线程篇.html 示例代码:https://gith ...