jQuery是什么? 是一款JavaScript数据库,方便地处理HTML、事件、动画等,可以兼容多浏览器,80%以上网站使用
- jQuery下载压缩版本,用于生产 ;下载非压缩版本,用于开发;
- 如何使用?
- 如何选择版本?
v1.x
v2.x:不兼容IE6-8
v3.x:分为精简版和普通版
- 使用cdn Content Delivery Network 内容分发网络
jQuery的基本概念
- 结构,表现 和行为分离 (html,js和css)
- $
window.jQuery === window.$
- $.xxx
- $.each(...)
- $.noop
- $.toArray()
- ...
- $(xxx)
$('#myDiv')
$('.myClass')
...
$(domObject) ->jQuery Object
$(xxx).get(0) ->DOM Object
$(xxx)[0] -> DOM Object
链式语法chaining
$('#divTest') .text('Hello, world!') $('#divTest')
$('#divTest').removeClass('blue') .text('Hello, world!')
$('#divTest').addClass('bold') .removeClass('blue')
$('#divTest').css('color', 'red') .addClass('bold')
.css('color', 'red')
$(document).ready(function(){…})
• vs window onload
JavaScript中如何选择元素?
• document.getElementById()
• document.getElementsByName()
• document.getElementsByTagName()
• document.getElementsByClassName()
JavaScript中如何选择元素?
• document.querySelector()
• document.querySelectorAll()
E: 元素选择器,是很常见的选择器,E代表文档元素,比如div,p等等
E[attr] 只使用属性名,但没有确定任何属性值,就是只要有这个属性就ok
E[attr="value"] 指定了属性名,并指定了该属性的属性值,必须有这个属性,并且属性 值为value才行
E[attr*="value"] 属性值包含value就行
E[attr^="value"] 选定了属性以value开头的所有元素,比如把attr写成href,value写成 http://
E[attr$="value"]选定了属性以value结尾的所有元素,比如要选择所有png格式的图片,attr写成src,value写成png就行
E[attr~="value"] 如果属性值包含很多词,并且以空格隔开的话,可以用这种来选择,比如元素的title属性值为hello world,要选中它,就在这里把value写成hello或者world就行,用得比较少
E[attr|="value"] 选择了属性值是value或者以“value-”开头的值,比如attr写成lang,value写成zh,就包含了zh,zh-cn等等语言的元素,用得比较少
:link 选择所有未被访问的链接。
:visited 选择所有已被访问的链接。
:hover 选择鼠标指针位于其上的链接。
:active 选择活动链接。
:focus 选择获得焦点的 input 元素。
:enabled 选择每个启用的 元素。
:disabled 选择每个禁用的 元素。
:checked 选择每个被选中的 元素。
:first-child 选择某个元素的第一个子元素
:last-child 选择某个元素的最后一个子元素
:nth-child() 选择某个元素的一个或多个特定的子元素, 括号里可以写整数值,比如1,2,也可以写表达式,注意这里的元素是从1开始,并不是从0开始
:nth-last-child() 选择某个元素的一个或多个特定的子元素,括号里面的写法和nth-child一样,不过是从这个元素的最后一个子元素开始算起
:nth-of-type() 类似于:nth-child,不同的是他多了个type,也就是只在符合type的子元素中进行计算
:nth-last-of-type() 和nth-last-child()类似,也是从最后一个子元素开始算起
:first-of-type 选择一个上级元素下的第一个同类子元素
:last-of-type 选择一个上级元素的最后一个同类子元素
:empty 选择的元素里面没有任何内容,这里没有内容指的是一点内容都没有,哪怕 是一个空格也都没有
:not() 否定选择器,not后面跟着一个选择器,表示选择和括号里的选择刚好相反
::first-line 用于选取指定选择器的首行
::first-letter 用于选取指定选择器的首字母
::before 在被选元素的内容前面插入内容。
::after 在被选元素的内容后面插入内容。
::selection 应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分)
jQuery选择器简介
• 兼容CSS3选择器标准
• 对选择器语法有更多扩充
• 返回0、1或多个jQuery元素的集合
• 集合内元素顺序和在页面上顺序一致
jQuery中的基本选择器
^ | $("input[name^='news']") | 选择所有的 name 属性以'news'开头的 input 元素 |
---|
* | $("*") | 所有元素 |
---|
• ID选择器
#id | $("#lastname") | id="lastname" 的元素 |
---|
• 类选择器
.class | $(".intro") | 所有 class="intro" 的元素 |
---|
.class.class | $(".intro.demo") | 所有 class="intro" 且 class="demo" 的元素 |
---|
• 元素选择器
• 后代选择器
parent > child | $("div > span") | 选取 元素的直接子元素的 元素 |
---|
• 属性选择器
[attribute] | $("[href]") | 所有带有 href 属性的元素 |
---|
[attribute=value] | $("[href='#']") | 所有 href 属性的值等于 "#" 的元素 |
---|
[attribute!=value] | $("[href!='#']") | 所有 href 属性的值不等于 "#" 的元素 |
---|
[attribute$=value] | $("[href$='.jpg']") | 所有带有 href 属性的元素 |
---|
[attribute][attribute] | $("input[id][name$='man']") | 可以使用多个属性进行联合选择,该选择器是得到所有的含有 id 属性并且那么属性以 man 结尾的元素 |
---|
jQuery中的筛选器/过滤器
• 位置筛选器
• 子元素筛选器
• 表单筛选器
• 内容筛选器
• 其他筛选器
• 自定义选择器
1.位置筛选器
:first | $("p:first") | 第一个 元素 |
---|---|---|
:last | $("p:last") | 最后一个 元素 |
:even | $("tr:even") | 所有偶数 |
:odd | $("tr:odd") | 所有奇数 |
:eq(index) | $("ul li:eq(3)") | 列表中的第四个元素(index 从 0 开始) |
:gt(n) | $("ul li:gt(3)") | 列出 index 大于 3 的元素 |
:lt(n) | $("ul li:lt(3)") | 列出 index 小于 3 的元素 |
2.子元素筛选器
:first-child | $("div span:first-child") | 返回所有的 div 元素的第一个子节点的数组 |
---|---|---|
:last-child | $("div span:last-child") | 返回所有的 div 元素的最后一个节点的数组 |
:first-of-type | $("p:first-of-type") | 选取属于其父元素的第一个 元素的每个 元素 |
:last-of-type | $("p:last-of-type") | 选取属于其父元素的最后一个 元素的每个 元素 |
:nth-child() | $("p:nth-child(3)") | 选取属于其父元素的第三个子元素的每个 元素 |
:nth-last-child() | $("p:nth-last-child(3)") | 选取属于其父元素的第三个子元素的 元素,从最后一个子元素开始计数 |
:nth-of-type() | $("p:nth-of-type(3)") | 选取属于其父元素的第三个 元素的每个 元素 |
:nth-last-of-type() | $("p:nth-last-of-type(3)") | 选取属于其父元素的第三个 元素的每个 元素,从最后一个子元素开始计数 |
:only-child | $("div button:only-child") | 返回所有的 div 中只有唯一一个子节点的所有子节点的数组 |
:only-of-type | $("p:only-of-type") | $("p:only-of-type") |
3.表单筛选器
:input | $(":input") | 所有 元素 |
---|---|---|
:checked | $(":checked") | 所有被选中的 input 元素 |
:button | $(":button") | 所有 type="button" 的 元素 |
:reset | $(":reset") | 所 有 type="reset" 的 元 素 |
:disabled | $(":disabled") | 所有禁用的 input 元素 |
:checkbox | $(":checkbox") | 所 有 type="checkbox" 的 元 素 |
:selected | $(":selected") | 所有被选取的 input 元素 |
:enabled | $(":enabled") | 所有激活的 input 元素 |
:file | $(":file") | 所 有 type="file" 的 元 素 |
:submit | $(":submit") | 所 有 type="submit" 的 元 素 |
:focus | $(":focus") | 选取当前具有焦点的元素 |
:image | $(":image") | 所有 type="image" 的 元素 |
:text | $(":text") | 所 有 type="text" 的 元 素 |
:password | $(":password") | 所 有 type="password" 的 元 素 |
:radio | $(":radio") | 所 有 type="radio" 的 元 素 |
4.内容筛选器
:empty | $(":empty") | 无子(元素)节点的所有元素 | |
---|---|---|---|
:contains(text) | $(":contains('W3School')") | 包含指定字符串的所有元素 | |
:has(selector) | $("p:has(span)") | $("p:has(span)") | |
:parent | $("td:parent") | 选取所有带有子元素且包含文本的 | 元素 |
5.其他筛选器
:lang(language) | $("p:lang(it)") | 选取所有 lang 属性为 "it" 的 元素 |
---|---|---|
:not(selector) | $("input:not(:empty)") | 所有不为空的 input 元素 |
:root | :root 选择器选取文档的根元素。 | |
:target | :target 选择器可用于选取当前活动的目标元素 | |
:hidden | $("p:hidden") | 所有隐藏的 元素 |
:visible | $("table:visible") | 所有可见的表格 |
:header | $(":header") | 所有标题元素 - |
:animated | 所有动画元素 |
jQuery选择器的性能优化
• 尽量使用CSS中有的选择器
• 避免过度约束
• 尽量以ID开头
• 让选择器的右边有更多特征
• 避免使用全局选择器
• 缓存选择器结果