第一百六十七节,jQuery,DOM 节点操作,DOM 节点模型操作

时间:2022-09-21 21:51:42

jQuery,DOM 节点操作,DOM 节点模型操作

学习要点:

  1.创建节点

  2.插入节点

  3.包裹节点

  4.节点操作

DOM 中有一个非常重要的功能,就是节点模型,也就是 DOM 中的“M”。页面中的元 素结构就是通过这种节点模型来互相对应着的,我们只需要通过这些节点关系,可以创建、 插入、替换、克隆、删除等等一些列的元素操作

一.创建节点

为了使页面更加智能化,有时我们想动态的在 html 结构页面添加一个元素标签,那么 在插入之前首先要做的动作就是:创建节点。

var box = $('<div id="box">节点</div>'); //创建一个节点
$('body').append(box); //将节点插入到<body>元素内部

二.插入节点

在创建节点的过程中,其实我们已经演示怎么通过.append()方法来插入一个节点。但除 了这个方法之余呢,jQuery 提供了其他几个方法来插入节点。

内部插入节点方法

第一百六十七节,jQuery,DOM 节点操作,DOM 节点模型操作

append(content) 向指定元素内部后面插入节点 content参数是要插入的节点

append(function (index, html) {}) 使用匿名函数向指定元素内部后面插入节点

appendTo(content) 将指定元素移入到指定元素 content 内部后面

prepend(content) 向指定元素 content 内部的前面插入节点

prepend(function (index, html) {}) 使用匿名函数向指定元素内部的前面插入节点

prependTo(content) 将指定元素移入到指定元素 content 内部前面

    $('div').append('<strong>节点</strong>'); //向 div 内部插入 strong 节点
$('div').append(function (index, html) { //使用匿名函数插入节点,html 是原节点
return '<strong>节点</strong>';
});
$('span').appendTo('div'); //讲 span 节点移入 div 节点内
$('span').appendTo($('div')); //同上
$('div').prepend('<span>节点</span>'); //将 span 插入到 div 内部的前面
$('div').append(function (index, html) { //使用匿名函数,同上
return '<span>节点</span>';
});
$('span').prependTo('div'); //将 span 移入 div 内部的前面
$('span').prependTo($('div')); //同上

外部插入节点方法

第一百六十七节,jQuery,DOM 节点操作,DOM 节点模型操作

after(content) 向指定元素的外部后面插入节点 content参数是要插入的节点

after(function (index, html) {}) 使用匿名函数向指定元素的外部后面插入节点

before(content) 向指定元素的外部前面插入节点 content

before(function (index, html) {}) 使用匿名函数向指定元素的外部前面插入节点

insertAfter(content) 将指定节点移到指定元素 content 外部的后面

insertBefore(content) 将指定节点移到指定元素 content 外部的前面

  $('div').after('<span>节点</span>'); //向 div 的同级节点后面插入 span
$('div').after(function (index, html) { //使用匿名函数,同上
return '<span>节点</span>';
});
$('div').before('<span>节点</span>'); //向 div 的同级节点前面插入 span
$('div').before(function (index, html) { //使用匿名函数,同上
return '<span>节点</span>';
});
$('span').insertAfter('div'); //将 span 元素移到 div 元素外部的后面
$('span').insertBefore('div'); //将 span 元素移到 div 元素外部的前面

三.包裹节点

jQuery 提供了一系列方法用于包裹节点,那包裹节点是什么意思呢?其实就是使用字符 串代码将指定元素的代码包含着的意思。

第一百六十七节,jQuery,DOM 节点操作,DOM 节点模型操作

第一百六十七节,jQuery,DOM 节点操作,DOM 节点模型操作

wrap(html) 向指定元素外层包裹一层 html 代码

wrap(element) 向指定元素外层包裹一层 DOM 对象节点,参数必须是原生节点对象

wrap(function (index) {}) 使用匿名函数向指定元素外层包裹一层自定义内容

$('div').wrap('<strong></strong>'); //在 div 外层包裹一层 strong
$('div').wrap('<strong>123</strong>'); //包裹的元素可以带内容
$('div').wrap('<strong><em></em></strong>'); //包裹多个元素
$('div').wrap($('strong').get(0)); //也可以包裹一个原生 DOM
$('div').wrap(document.createElement('strong')); //临时的原生 DOM
$('div').wrap(function (index) { //匿名函数
return '<strong></strong>';
});

unwrap() 移除一层指定元素包裹的内容

$('div').unwrap(); //移除一层包裹内容,多个需移除多次

wrapAll(html) 用 html 将所有元素包裹到一起

wrapAll(element) 用 DOM 对象将所有元素包裹在一起,参数是原生对象

wrapInner(html) 向指定元素的子内容包裹一层 html

wrapInner(element) 向指定元素的子内容包裹一层 DOM 对象节点,参数是原生对象

wrapInner(function (index) {}) 用匿名函数向指定元素的子内容包裹一层

$('div').wrapAll('<strong></strong>'); //所有 div 外面只包一层 strong
$('div').wrapAll($('strong').get(0)); //同上
$('div').wrapInner('<strong></strong>'); //包裹子元素内容
$('div').wrapInner($('strong').get(0)); //DOM 节点
$('div').wrapInner(function () { //匿名函数
return '<strong></strong>';
});

 注意:.wrap()和.wrapAll()的区别在前者把每个元素当成一个独立体,分别包含一层外 层;后者将所有元素作为一个整体作为一个独立体,只包含一层外层。这两种都是在外层包 含,而.wrapInner()在内层包含。

四.节点操作,复制、替换和 删除节点

除了创建、插入和包裹节点,jQuery 还提供了一些常规的节点操作方法:复制、替换和 删除节点。

clone()方法,复制一个节点,也叫克隆一个节点,有一个可选参数

注意:clone(true)参数可以为空,表示只复制元素和内容,不复制事件行为。而加上 true 参数的话,这个元素附带的事件处理行为也复制出来。

$('div').clone().appendTo('body');  //复制一个节点添加到 body中

remove()方法,删除一个节点,有参可选,

注意:.remove()不带参数时,删除前面对象选择器指定的元素。而.remove()也可以 带选择符参数的,比如:$('div').remove('#box');只删除 id=box 的 div。

//删除节点
$('div').remove(); //直接删除 div 元素

detach()保留事件的删除节点

//保留事件的删除节点
$('div').detach(); //保留事件行为的删除

注意:.remove()和.detach()都是删除节点,而删除后本身方法可以返回当前被删除的节 点对象,但区别在于前者在恢复时不保留事件行为,后者则保留。

empty()清空节点,删除掉节点里的内容

//清空节点
$('div').empty(); //删除掉节点里的内容

replaceWith()替换节点,参数是要替换的节点

replaceAll()替换节点,参数是被替换的节点

$('div').replaceWith('<span>节点</span>'); //将 div 替换成 span 元素
$('<span>节点</span>').replaceAll('div'); //同上

注意:节点被替换后,所包含的事件行为就全部消失了。

第一百六十七节,jQuery,DOM 节点操作,DOM 节点模型操作的更多相关文章

  1. 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据

    第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...

  2. 第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch&lpar;搜索引擎&rpar;scrapy写入数据到elasticsearch中

    第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中 前面我们讲到的elasticsearch( ...

  3. 第一百六十二节,jQuery入门介绍

    jQuery入门 学习要点: 1.什么是  jQuery 2.学习 jQuery的条件 3.jQuery的版本 4.jQuery的功能和优势 5.其他 JavaScript库 6.是否兼容低版本  I ...

  4. 第一百五十七节,封装库--JavaScript,预加载图片

    封装库--JavaScript,预加载图片 首先了解一个Image对象,为图片对象 Image对象 var temp_img = new Image();   //创建一个临时区域的图片对象alert ...

  5. 第一百九十七节,jQuery EasyUI,LinkButton&lpar;按钮&rpar;组件

    jQuery EasyUI,LinkButton(按钮)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 LinkButton(按钮)组件的使用方法,这个组 ...

  6. 第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态

    jQuery,知问前端--cookie 插件 学习要点: 1.使用 cookie 插件 2.注册直接登录 Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登 录信息.购 ...

  7. 第一百七十七节,jQuery,知问前端--概述及 jQuery UI

    jQuery,知问前端--概述及 jQuery UI 学习要点: 1.项目介绍 2.jQuery UI 3.UI 主题 一.项目介绍 我们重点仿照“知乎”的架构模式来搭建界面和布局,以及大部分前端功能 ...

  8. 第一百六十一节,封装库--JavaScript,完整封装库文件

    封装库--JavaScript,完整封装库文件 /** *feng_zhuang_ku_1.0版本,js封装库,2016/12/29日:林贵秀 **/ /** 前台调用 * 每次调用$()创建库对象, ...

  9. 第二百六十七节,Tornado框架-分页封装模块

    Tornado框架-分页封装模块 框架引擎 #!/usr/bin/env python #coding:utf-8 import tornado.ioloop import tornado.web # ...

随机推荐

  1. SQL语句总结

    SQL UNION 操作符合并两个或多个 SELECT 语句的结果. 语法: SELECT column_name(s) FROM table1        UNION        SELECT ...

  2. 网易测试分享会——&OpenCurlyDoubleQuote;一起打造你想要的QA团队”

    昨天(2016.11.30)参加了网易资深测试专家王晓明的测试分享会——“一起打造你想要的QA团队”,以下为笔者做的归纳总结. 重点 1.让测试更加容易做好.不容易测试的代码,不具有健壮性. 2.Ke ...

  3. linux权限补充:rwt rwT rws rwS 特殊权限

    众所周知,Linux的文件权限如: 777:666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件.所以我们只需要将bash复制出来到另一个地方,然后用root加上U ...

  4. crtmpserver流媒体服务器的介绍与搭建

    crtmpserver流媒体服务器的介绍与搭建 (2012-02-29 11:28) 标签:  crtmpserver  C++ RTMP Server  rtmp  Adobe FMS(Flash ...

  5. CS231n 2017 学习笔记01——KNN(K-Nearest Neighbors)

    本博客内容来自 Stanford University CS231N 2017 Lecture 2 - Image Classification 课程官网:http://cs231n.stanford ...

  6. CodeForces 140C New Year Snowm

    题目链接:http://codeforces.com/contest/140/problem/C 题目大意: 有n个雪球(半径为:r1,r2,r3.....rn):一个雪人要三个雪球.但是要求半径两两 ...

  7. 20155312 张竞予 Exp4 恶意代码分析

    Exp4 恶意代码分析 目录 基础问题回答 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控. (2)如果 ...

  8. python之time模块:获取当前时间

    time模块举例 import time # 获取当前时间戳 t = time.time() print('1)获取当前时间戳:', t) # 当前时间的struct_time形式 t = time. ...

  9. 【320】Python 2&period;x 与 3&period;x 的区别

    通过代码移植的报错进行梳理! 1. print 函数的区别 Python 2.x 中可以加空格或者括号,但是 Python 3.x 只能是括号的 # Python 2.x >>> p ...

  10. 20155235 《Java程序设计》 实验五 Java网络编程及安全

    20155235 <Java程序设计> 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验要求 没有Linu ...