终于等到你
前言
上篇文章让大家认识了 jQuery
,并学会如何使用 jQuery
, 那今天这篇带大家再深一步的聊聊,看完一定要尝试练习一遍哟~
首先,要先和大家聊一下 jQuery
对象和 DOM
对象。
一、jQuery 对象和 DOM 对象
1.1 DOM
对象是什么?
我比较喜欢实践,直接示例吧,有一定
JavaScript
基础的同学很容易看懂,基础不好的其他同学该补补课咯。
-
代码示例
-
html
<button>隐藏盒子</button> <div class="box"></div>
-
css
.box { width: 200px; height: 200px; background-color: green; }
-
JavaScript
// 点击按钮 document.querySelector('button').addEventListener('click', function () { // 控制台输出当前绑定事件的元素 console.log(this) // 隐藏盒子 document.querySelector('.box').style.opacity = 0 })
-
-
效果如下
咦,看过我上篇文章的同学肯定想,这不和上篇最后展示的效果一样吗,没错,效果一样,只不过这次
JavaScript
的代码是 DOM 对象。
我们有一行代码是控制台输出当前绑定事件的元素,看下图,这个样式就表示是 DOM 对象。
1.2 jQuery
对象是什么?
- 首先我们要知道
jQuery
的顶级对象是$
。 $
是jQuery
的别称,在代码中可以使用jQuery
代替,一般为了方便,通常都直接使用$
。$
是jQuery
的顶级对象,相当于原生JavaScript
中的 window,把元素利用$
包装成jQuery
对象,就可以调用jQuery
的方法。
就不再放代码了,直接甩控制台输出结果示例
看到这种伪数组存储的形式就是 jQuery
对象。
总结
- 用原生 JS 获取的对象就是 DOM 对象。
jQuery
方法获取的元素就是jQuery
对象。jQuery
对象本质是:利用$
对 DOM 对象包装后产生的对象(伪数组形式存储)。
注意:只有 jQuery
对象才能使用 jQuery
方法,DOM 对象则使用原生的 JavaScript
方法。
看下图更容易理解些
1.3 jQuery
对象和 DOM 对象转换
这两个对象之间是可以相互转换的,因为原生 JS 比 jQuery
更大,原生的一些属性和方法 jQuery
没有给我们封装,所以要想使用这些属性和方法需要把 jQuery
对象转换为 DOM 对象才能使用。
ps:实际开发中比较常用的是把 DOM 对象转换为 jQuery
对象,这样才能够调用功能更加强大的 jQuery
中的方法。
-
DOM 对象转换成
jQuery
对象(方法只有一种)// 获取 DOM 对象 var box = document.querySelector('.box') // 把 DOM 对象转换为 jQuery 对象 var jQueryObject = $(box)
-
jQuery
对象转换为DOM
对象(方法有两种)// jQuery 对象[索引值] var Dom1 = $('div')[0] console.log(Dom1) // jQuery 对象.get[索引值] var Dom2 = $('div').get(0) console.log(Dom2)
二、jQuery
选择器
原生 JS 获取元素方式很多,很杂,而且兼容性情况不一致,因此 jQuery
给我们做了封装,使获取元素统一标准。
- 它允许对 HTML 元素组和单个元素进行操作。
- 它基于元素的 id、类、类型、属性、属性值等查找或选择 HTML 元素,基于已经存在的 CSS 选择器,它还有一些自定义的选择器。
- 它的所有选择器都以美元符号开头:
$
()。
2.1 基础选择器
- 说明:里面选择器直接写 CSS 选择器即可,但是要加引号。
$('选择器')
名称 | 用法 | 描述 |
---|---|---|
ID 选择器 | $(’#id’) | 获取指定 ID 的元素 |
全选 选择器 | $(’*’) | 匹配所有元素 |
类 选择器 | $(’.class’) | 获取同一类 class 的元素 |
标签 选择器 | $(‘div’) | 获取同一类标签的所有元素 |
并集选择器 | $(‘div,p,li’) | 选取多个元素 |
交集选择器 | $(‘li.list’) | 交集元素 |
2.2 层级选择器
名称 | 用法 | 描述 |
---|---|---|
子代选择器 | $(‘ul>li’) | 使用 > 号,获取的是亲儿子层级的元素,不会获取孙子层级的元素 |
后代选择器 | $(‘ul li’) | 两个元素中间使用空格,代表后代选择器,获取 ul 下的所有 li 元素,包括孙子等 |
2.3 筛选选择器
语法 | 用法 | 描述 |
---|---|---|
:first | $(‘li:first’) | 获取第一个 li 元素 |
:last | $(‘li:last’) | 获取最后一个 li 元素 |
:eq(index) | $(‘li:eq(2)’) | 获取到 li 元素中,选择索引号为 2 的元素,索引号 index 从 0 开始 |
:odd | $(‘li:odd’) | 获取到 li 元素中,选择索引号为奇数的元素 |
:even | $(‘li:even’) | 获取到的 li 元素中,选择索引号为偶数的元素 |
jQuery
中还有一些筛选方法,类似 DOM 中通过一个节点找另外一个节点,除了父、子、兄以外有所加强。
语法 | 用法 | 说明 |
---|---|---|
parent() | $(‘li’).parent() | 查找 li 元素的父级元素 |
children(selector) | $(‘ul’).children(‘li’) | 相当于子代选择器 |
find(selector) | $(‘ul’).find(‘li’) | 相当于后代选择器 |
siblings(selector) | $(‘ul’).siblings(‘ul’) | 查找兄弟节点,不包括自己本身 |
nextAll([expr]) | $(‘ul’).nextAll() | 查找当前元素之后所有的同辈元素 |
prevtAll([expr]) | $(‘ul’).prevAll() | 查找当前元素之前所有的同辈元素 |
hasClass(class) | $(‘ul’).hasClass(‘nva-list’) | 检查当前的元素是否含有某个特定的类,如果有,返回 true |
eq(index) | $(‘li’).eq(2) | 相当于 $(‘li:eq(2)’),选择索引号为 2 的元素,索引号 index 从 0 开始 |
若对你有收获,下一篇再见吧😊