前端培训-中级阶段(6)- jQuery 元素节点操作(2019-7-18期)

简介: 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。上一节我们讲了 jQuery 的基本使用。这节我们讲元素节点相关的内容。

内容目录


  1. 选择器


  1. 文档处理


  1. 筛选


选择器


选择器在初级的时候就讲过了。上节也简单的列了一下。这节就找一点东西说一说吧。


Sizzle 选择器引擎


先问问DOM的API查找性能,有不知道的吗?由快到慢 ID > Class > Name > Tag。


CSS 选择器匹配的顺序,有不知道的吗?从左往右


jQuery的选择器匹配的顺序,有没有不知道的?Sizzle 选择器引擎从左往右,当然,既然人家优秀肯定有道理。如果支持更快querySelector会选择更快的方法。如果有id选择器,他会先进行id选择,缩小范围。感兴趣可以去看看Sizzle选择器引擎介绍,有能力读源码当然更好了。


举个栗子

  1. 查询语句:

$('div span')


  1. 代码结构:


div
div
  div
   span
  div
span


  1. 先查div的话,我们需要遍历多少次?两次可以吗?但是如果先查span,那我们parent去找直到找到头就完事了。


  1. 再说另一个,子节点只有一个父节点。但是父节点会有很多子节点。


文档处理



appendappendToprependprependTo


操作的是父子节点,效果也等同于原生的api。已存在节点是移动,新节点是新增。

  1. parent.append(child) 是将child添加到parent的最后面。链式操作对象为parent。对应原生appendChild


  1. child.appendTo(parent) 是将child添加到parent的最后面。链式操作对象为child


  1. parent.prepend(child) 是将child添加到parent的最前面。链式操作对象为parent


  1. child.prependTo(parent) 是将child添加到parent的最前面。链式操作对象为child


insertAfterafterinsertBeforebefore


操作的是兄弟节点,效果同上。


  1. A.after(B) 是在A后面增加B。链式操作对象为A


  1. B.insertAfter(A) 是把B增加到A后面。链式操作对象为B


  1. A.before(B) 是在A前面增加B。链式操作对象为A


  1. B.insertBefore(A) 是把B增加到A前面。链式操作对象为B


wrapunwrapwrapallwrapInnerreplaceWithreplaceAll


说实话这几个我用都没用过。

  1. $("a").wrap("<div class='wrap'></div>") 是指,将所有a标签,用后面的节点包起来。


  1. $('li').unwrap()将他们的父节点移除。也就是说所有子节点占据了原来父级的位置。


  1. $("a").wrapAll("<div class='wrap'></div>") 是指,将所有到标签都合并到第一个位置,并且包裹起来。


  1. $("a").wrapInner("<b></b>")是指,讲a标签的内容,用b标签包裹起来。


  1. $("a").replaceWith('<a


href="//www.lilnong.top">lilnong.top</a>') 将所有的a标签,用新标签替换。那么链式操作对象是谁?


  1. $('<a href="//www.lilnong.top">lilnong.top</a>').replaceAll("a") 用新标签替换,把所有的a标签替换。那么链式操作对象是谁?


emptyremovedetach


  1. $("a").empty() 删除匹配的元素集合中所有的子节点。


  1. $("a").remove() 从DOM中删除所有匹配的元素。这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。但除了这个元素本身得以保留之外,其他的比如绑定的事件,附加的数据等都会被移除。


  1. $("a").detach() 从DOM中删除所有匹配的元素。这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。


clone([Event[,deepEven]])


克隆一个副本出来。我们知道,如果这个元素是文档内的,那么上面的方法会变成移动。当我们不想移动的时候,就需要clone。


  1. event: 一个布尔值(true 或者 false)指示事件处理函数是否会被复制。V1.5以上版本默认值是:false


  1. deepEven: 一个布尔值,指示是否对事件处理程序和克隆的元素的所有子元素的数据应该被复制。


筛选



  1. hasClass(class) 判断当前元素有没有对应class。比如我们在模拟复选框,我们需要判断当前的状态。$(this).hasClass('checked')


  1. filter(class) 比如我们现有一个所有复选框的合集,我们要过滤出所有选中状态的。


  1. next() 获取下一个元素


  1. nextAll() 获取后面所有元素


  1. nextUntil() 获取后面所有元素,可以设置终止条件。


  1. parent()prev() 基本有next()相识的方法


  1. siblings() 获取所有兄弟元素


  1. end() 我觉得这个方法就很厉害,把当前的链式操作对象移交给上次。
    $("p").find("span").end()目前操作对象是$("p")



相关文章
|
23天前
|
JavaScript
jQuery - 添加元素
通过 jQuery,可以很容易地添加新元素/内容。
38 10
|
1月前
|
存储 前端开发 JavaScript
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
本文介绍了JavaScript变量的声明和使用、标识符的命名规则、如何获取和操作HTML元素,以及JavaScript的鼠标事件处理,通过示例代码展示了这些基础知识点在实际开发中的应用。
37 2
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
|
1月前
|
前端开发
前端基础(十四)_隐藏元素的方法
本文介绍了几种在前端开发中隐藏元素的方法,包括使用`display:none`、`visibility:hidden`、`opacity:0`等CSS属性,并提供了相应的示例代码。此外,还提到了其他隐藏元素的技巧,如通过设置元素位置、使用`overflow`属性和`filter`属性以及`rgba`颜色值来实现元素的隐藏。
55 1
前端基础(十四)_隐藏元素的方法
|
27天前
|
JSON 缓存 前端开发
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
22 2
|
1月前
|
前端开发 JavaScript
前端基础(七)_DOM元素获取(getElementById、getElementsByTagName、getElementsByClassName、querySelector等)
本文介绍了如何在前端通过不同的方法获取DOM元素,包括getElementById、getElementsByTagName、getElementsByClassName、querySelector和querySelectorAll。
80 3
|
1月前
|
JavaScript 前端开发
jQuery - 添加元素
jQuery - 添加元素
17 2
|
19天前
|
JavaScript 前端开发 API
【前端基础篇】JavaScript之jQuery介绍
【前端基础篇】JavaScript之jQuery介绍
43 0
|
1月前
|
JavaScript 前端开发
jQuery - 添加元素
jQuery - 添加元素
23 6
|
1月前
|
前端开发 JavaScript
前端ES5 | js —添加元素方法
前端ES5 | js —添加元素方法
|
1月前
|
移动开发 前端开发 JavaScript
使用html-to-image代替html2canvas,结合jspdf实现下载pdf(下载截图下载前端dom元素)
本文介绍了在前端项目中,当使用`html2canvas`遇到问题时,如何使用`html-to-image`库作为替代方案,结合`jspdf`实现将DOM元素生成为PDF文件并提供下载。文章首先讨论了`html2canvas`可能遇到的问题,并提供了该库的使用示例代码。随后,详细介绍了`html-to-image`库的安装和使用方法,展示了如何将DOM元素转换为Canvas,再利用`jspdf`生成PDF文件。最后,文章通过示例代码说明了整个转换和下载的过程,并展示了效果截图。
36 0