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. Linux学习总结(十二)—— CentOS用户管理:创建用户、修改用户、修改密码、密码有效期、禁用账户、解锁账户、删除用户、查看所有用户信息

    文章首发于Linux学习总结(十二)-- CentOS用户管理,请尊重原创保留原文链接. 创建用户 useradd -g webadmin -d /home/zhangsan zhangsan pas ...

  2. “margin塌陷” 嵌套盒子外边距合并现象

    来源于官方文档对于外边距合并的解释: 注释:只有普通文档流中块框的垂直外边距才会发生外边距合并.行内框.浮动框或绝对定位之间的外边距不会合并. 出现外边距塌陷的三种情况: 1.相邻兄弟元素之间 若两者 ...

  3. C++ 大多数人将 cin::sync() 视为清除缓存区函数的误用

    ps:我发现有网站将我之前写的标题为:C++ 关于大多数人将cin::sync()视为清楚缓冲区函数的错误   的文章转载了,声明一下那篇文章中的内容可能存在错误,本人已删,请注意. 一百度,大多数人 ...

  4. 监听 window.open 打开的窗口关闭并回调

    第三方的登录的解决方案通常有两种方式,一是打开一个新的标签页,然后登录回调回来: 二是通过父窗口打开一个子窗体去第三方登录,登陆成功时关掉子窗体回到父窗口. 问题来了 我的父窗体怎么样才知道子窗体被关 ...

  5. jQuery ajax error函数(交互错误信息的获取)

    一般error函数返回的参数有三个: function(jqXHR jqXHR, String textStatus, String errorThrown).常见调用代码如下: $.ajax({ u ...

  6. 转每天一个linux命令(4):mkdir命令

    linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录... 2.命令 ...

  7. css控制竖直文字显示

    假如有一天,你把水平文字看腻味了...... 我建议你不妨试试垂直文字显示,就像这样: 我 是 竖 直 显 示 的 : 哈哈! 言归正传,怎么把一段话,垂直显示呢? 方法1: //把下面代码另存为ht ...

  8. C# 单例模式(Singleton Pattern)(转SuagrMatl)

    单例模式的定义: 确保一个类只有一个实例,并提供一个全局访问点. 首先实例大家应该都明白就是类生成对象的过程简单的就是String s=new String(),则s就是个实例. Q:如何只生成一个实 ...

  9. Day4 - Linux分区规划与xshell使用排错

    1.1 没有重要数据 /boot   200M    存放系统的引导信息 内核 swap   交换分区   防止内存用光了 临时的一个内存 如果你的内存小于8G swap是内存的1.5倍   如果你的 ...

  10. ORACLE分区表、分区索引详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...