jQuery既然是为了帮助你能从js的繁琐中解脱出来,自然在DOM操作上也有自己的一套。

1、修改Text和HTML

之前我们提到过,如果用JS的话,你要修改Text或者HTML需要用到其innerHTML和innerText属性,但是放在jQuery里面,你需要用到的是html()方法和text()方法,而且这两个方法很巧妙,如果你不传参,就是获取值;传参,就是更改值:
<!-- HTML结构 -->
<ul id="test-ul">
<li class="js">JavaScript</li>
<li name="book">Java &amp; JavaScript</li>
</ul> //jQuery操作
$('#test-ul li[name=book]').text(); // 'Java & JavaScript'
$('#test-ul li[name=book]').html(); // 'Java &amp; JavaScript'
9
 
1
<!-- HTML结构 --> 
2
<ul id="test-ul">
3
    <li class="js">JavaScript</li>
4
    <li name="book">Java &amp; JavaScript</li>
5
</ul>
6

7
//jQuery操作
8
$('#test-ul li[name=book]').text(); // 'Java & JavaScript'
9
$('#test-ul li[name=book]').html(); // 'Java &amp; JavaScript'

一个jQuery对象是可以包含0个或者多个DOM对象的,所以实际上它的方法会作用到每个DOM的节点上。

2、修改CSS

jQuery中可以使用css()方法对其CSS进行批量修改,比如高亮显示:
$('#test-css li.dy>span').css('background-color', '#ffd351').css('color', 'red');
1
 
1
$('#test-css li.dy>span').css('background-color', '#ffd351').css('color', 'red');

同样地,如果css方法的第二个参数不传值,那么默认会返回现有属性:
var div = $('#test-div');
div.css('color'); // '#000033', 获取CSS属性
2
 
1
var div = $('#test-div');
2
div.css('color'); // '#000033', 获取CSS属性

3、新增class

var div = $('#test-div');
div.hasClass('highlight'); // false, class是否包含highlight
div.addClass('highlight'); // 添加highlight这个class
div.removeClass('highlight'); // 删除highlight这个class
4
 
1
var div = $('#test-div');
2
div.hasClass('highlight'); // false, class是否包含highlight
3
div.addClass('highlight'); // 添加highlight这个class
4
div.removeClass('highlight'); // 删除highlight这个class

新增class属性可以很好地配合CSS用来进行效果展示:
<!-- HTML结构 -->
<style>
.highlight {
color: #dd1144;
background-color: #ffd351;
}
</style> <div id="test-highlight-css">
<ul>
<li class="py"><span>Python</span></li>
<li class="js"><span>JavaScript</span></li>
<li class="sw"><span>Swift</span></li>
<li class="hk"><span>Haskell</span></li>
</ul>
</div> //你可以这样使用jQuery配置css
var div = $('#test-highlight-css');
div.addClass('highlight');
21
 
1
<!-- HTML结构 -->
2
<style>
3
.highlight {
4
    color: #dd1144;
5
    background-color: #ffd351;
6
}
7
</style>
8

9
<div id="test-highlight-css">
10
    <ul>
11
        <li class="py"><span>Python</span></li>
12
        <li class="js"><span>JavaScript</span></li>
13
        <li class="sw"><span>Swift</span></li>
14
        <li class="hk"><span>Haskell</span></li>
15
    </ul>
16
</div>
17

18

19
//你可以这样使用jQuery配置css
20
var div = $('#test-highlight-css');
21
div.addClass('highlight');

4、隐藏和显示DOM

var a = $('a[target=_blank]');
a.hide(); // 隐藏
a.show(); // 显示
3
 
1
var a = $('a[target=_blank]');
2
a.hide(); // 隐藏
3
a.show(); // 显示

5、获取DOM信息

//获取DOM的高宽等信息
// HTML文档大小:
$(document).width(); // 800
$(document).height(); // 3500 //操作DOM节点的属性
<div id="test-div" name="Test" start="1">...</div>
var div = $('#test-div');
div.attr('data'); // undefined, 属性不存在
div.attr('name'); // 'Test'
div.attr('name', 'Hello'); // div的name属性变为'Hello'
div.removeAttr('name'); // 删除name属性
div.attr('name'); // undefined //获取和设置对应value值
input.val(); // 'test'
input.val('abc@example.com'); // 文本框的内容已变为abc@example.com
19
 
1
//获取DOM的高宽等信息
2
// HTML文档大小:
3
$(document).width(); // 800
4
$(document).height(); // 3500
5

6

7
//操作DOM节点的属性
8
<div id="test-div" name="Test" start="1">...</div>
9
var div = $('#test-div');
10
div.attr('data'); // undefined, 属性不存在
11
div.attr('name'); // 'Test'
12
div.attr('name', 'Hello'); // div的name属性变为'Hello'
13
div.removeAttr('name'); // 删除name属性
14
div.attr('name'); // undefined
15

16

17
//获取和设置对应value值
18
input.val(); // 'test'
19
input.val('abc@example.com'); // 文本框的内容已变为abc@example.com

还要提一下的是,jQuery中还有一个方法叫做prop(),和attr()是类似的,但是对于某些可以没有值的属性来说,处理方式两者有所不同,例如:
<input id="test-radio" type="radio" name="test" checked value="1">
1
 
1
<input id="test-radio" type="radio" name="test" checked value="1">

以上代码中的checked,通常我们写作 checked="checked",但是在HTML5中是可以直接写 checked 这种方式的,两者对于其的处理方式是:
var radio = $('#test-radio');
radio.attr('checked'); // 'checked'
radio.prop('checked'); // true
3
 
1
var radio = $('#test-radio');
2
radio.attr('checked'); // 'checked'
3
radio.prop('checked'); // true

prop()的返回值更合理一些,不过,用 is() 方法判断更好:
var radio = $('#test-radio');
radio.is(':checked'); // true
2
 
1
var radio = $('#test-radio');
2
radio.is(':checked'); // true

类似的属性还有selected,处理时最好用is(':selected')。

6、添加DOM

之前我们提到过,要添加DOM的话可以使用html()这种方式,原始简单粗暴。

实际上有个更好的方法 append(),它不仅像html()一样可以直接添加片段,还可以传入原始的DOM对象、jQuery对象和函数对象:
// 创建DOM对象:
var ps = document.createElement('li');
ps.innerHTML = '<span>Pascal</span>';
// 添加DOM对象:
ul.append(ps); // 添加jQuery对象:
ul.append($('#scheme')); // 添加函数对象:
ul.append(function (index, html) {
return '<li><span>Language - ' + index + '</span></li>';
});
x
 
1
// 创建DOM对象:
2
var ps = document.createElement('li');
3
ps.innerHTML = '<span>Pascal</span>';
4
// 添加DOM对象:
5
ul.append(ps);
6

7
// 添加jQuery对象:
8
ul.append($('#scheme'));
9

10
// 添加函数对象:
11
ul.append(function (index, html) {
12
    return '<li><span>Language - ' + index + '</span></li>';
13
});

append() 把DOM添加到最后,相应的 prepend() 把DOM添加到最前。

特别注意:如果要添加的DOM节点已经存在于HTML文档中,它会首先从文档移除,然后再添加,换句话说,对于已经存在于HTML中的DOM节点,可以使用append()方法达到移动的目的。

和append方法很类似的有个方法叫做 after(),其作用是在被选元素后插入指定的内容,仔细看看区别在于:
  • append() 是在被选元素的结束标签前面(即改被选元素的内部)插入指定内容
  • after() 是在被选元素的结束标签后面(即该被选元素的外部)插入指定的内容

也就是说,append() 实际上是类似于在某个节点中添加其子节点,而after()是某个节点之后添加兄弟节点,也就是说,after()是用于同级节点的,对应的,还有before()方法。

7、删除DOM

拿到对应的DOM节点的jQuery对象以后,直接调用 remove() 方法就可以删除了,如果该jQuery对象包含多个DOM节点,还可以实现批量删除。


06jQuery-04-DOM操作的更多相关文章

  1. python 全栈开发,Day54(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)

    04-jQuery的属性操作 jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 html属性操作:是对html文档中的属性进行读取,设置和移除操作.比如at ...

  2. jQuery学习之路(2)-DOM操作

    ▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看 ...

  3. 从DOM操作看Vue&React的前端组件化,顺带补齐React的demo

    前言 接上文:谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo 上次写完博客后,有朋友反应第一内容有点深,看着迷迷糊糊:第二是感觉没什么使用场景,太过业务化,还不如直接写Vue ...

  4. 摆脱DOM操作,从TodoMVC看angularJS

    取代jQuery? 我很久之前便听说了angularJS的大名,之前的leader也经常感叹angularJS的设计如何如何精妙,可叹一直没有机会深入了解,国庆长假因为没钱出游,倒是可以对他做一个了解 ...

  5. 前端页面卡顿?或是DOM操作惹的祸,需优化代码

    文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaSc ...

  6. webform(九)——JQuery基础(选择器、事件、DOM操作)

    JQuery -- 一个js函数包 一.选择器 1.基本选择器 ①id选择器:#       ②class选择器:.       ③标签名选择:标签名 ④并列选择:用,隔开          ⑤后代选 ...

  7. HTML 学习笔记 JQuery(DOM 操作)

    一般来说,DOM操作分为三个方面,即:DOM Core(核心), HTML_DOM 和 CSS_DOM. 1.DOM Core DOM Core 并不专属于JavaScript,任何一种支持DOM的程 ...

  8. dom操作导致超级卡顿。。。

    var i=0;j=30;setinterval(function(){ document.getElementId(idname).style.top=j+'px'; i<3?i++:i=0; ...

  9. php中通过DOM操作XML

    DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...

  10. jQuery的DOM操作详解

    DOM(Document Object Model-文档对象模型):一种与浏览器, 平台, 语言无关的规则, 使用该接口可以轻松地访问页面中所有的标准组件DOM操作的分类 核心-DOM: DOM Co ...

随机推荐

  1. canvas探照灯效果

    canvas中的clip()方法用于从原始画布中剪切任意形状和尺寸.一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域) 也可以在使用clip()方法前通过使用s ...

  2. registry key 'Java Runtime Environment' has value'1.8',but '1.7' is requaired(转)

    当更新jdk后,运行java命令可能会提示类似这样registry key 'Java Runtime Environment' has value'1.8',but '1.7' is requair ...

  3. 【Centos7 GRUB】修改开机等待时间

    centos7与之前版本不同,在/boot/grub/下没有 grub.conf文件,但在/etc/grub2/grub.cfg可找到帮助信息 [root@za default]# cat /boot ...

  4. 【Centos7】安装memcached

    1.Linux系统安装memcached,首先要先安装libevent库. 安装libevent库有两种方式 (1)rpm安装 yum install libevent libdeve (2)源码包安 ...

  5. 设计一个程序能够将某一个目录下面的所有文件名打印出来---File类的使用

    ,设计一个程序能够将某一个目录下面的所有文件名打印出来 运用到的方法有:返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录:list()           测试此抽象路径名表示的 ...

  6. 在fetch方法中添加header后遇到的预检请求问题

    今天在使用fetch方法 fetch('xxx.com',{header:{bbbbbbb:111}}) 浏览器返回的请求信息中,header变成了 :authority:koss.nocorp.me ...

  7. Hibernate注解-类级别注解

  8. d3.js多个x轴y轴canvas柱状图

    最终效果图镇楼: 本文通过三个步骤来介绍d3.js. 1.简单的柱状图: 2.多个x轴的柱状图: 3.多个x轴.y轴的柱状图: 学习心得: d3.js入门相对比较困难,一旦掌握了核心思想,不断熟悉AP ...

  9. jmeter性能测试 套路二

    1.一般我们不会通过下面这种去跑性能测试 2.我们会通过这种方式去跑性能测试 3.录制自动化 就用新的 4.录制性能测试  就用

  10. 递归的二叉查找树Java实现

    package practice; public class TestMain { public static void main(String[] args) { int[] ao = {50,18 ...