jquery选择的艺术

jQuery是什么? 是一款JavaScript数据库,方便地处理HTML、事件、动画等,可以兼容多浏览器,80%以上网站使用

  • jQuery下载压缩版本,用于生产 ;下载非压缩版本,用于开发;
  • 如何使用? <script src="jquery-3.1.0.js"></script>
  • 如何选择版本?

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 选择每个启用的 <input> 元素。
:disabled 选择每个禁用的 <input> 元素。
:checked 选择每个被选中的 <input> 元素。
: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") 选取 <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") 第一个 <p> 元素
:last $("p:last") 最后一个<p>元素
:even $("tr:even") 所有偶数 <tr> 元素
:odd $("tr:odd") 所有奇数 <tr> 元素
: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") 选取属于其父元素的第一个 <p> 元素的每个 <p> 元素
:last-of-type $("p:last-of-type") 选取属于其父元素的最后一个 <p> 元素的每个 <p> 元素
:nth-child() $("p:nth-child(3)") 选取属于其父元素的第三个子元素的每个 <p> 元素
:nth-last-child() $("p:nth-last-child(3)") 选取属于其父元素的第三个子元素的 <p> 元素,从最后一个子元素开始计数
:nth-of-type() $("p:nth-of-type(3)") 选取属于其父元素的第三个 <p> 元素的每个 <p> 元素
:nth-last-of-type() $("p:nth-last-of-type(3)") 选取属于其父元素的第三个 <p> 元素的每个 <p> 元素,从最后一个子元素开始计数
:only-child $("div button:only-child") 返回所有的 div 中只有唯一一个子节点的所有子节点的数组
:only-of-type $("p:only-of-type") $("p:only-of-type")

3.表单筛选器

:input $(":input") 所有 <input> 元素
:checked $(":checked") 所有被选中的 input 元素
:button $(":button") 所有 type="button" 的 <input> 元素
:reset $(":reset") 所 有 type="reset" 的 <input> 元 素
:disabled $(":disabled") 所有禁用的 input 元素
:checkbox $(":checkbox") 所 有 type="checkbox" 的 <input> 元 素
:selected $(":selected") 所有被选取的 input 元素
:enabled $(":enabled") 所有激活的 input 元素
:file $(":file") 所 有 type="file" 的 <input> 元 素
:submit $(":submit") 所 有 type="submit" 的 <input> 元 素
:focus $(":focus") 选取当前具有焦点的元素
:image $(":image") 所有 type="image" 的 <input> 元素
:text $(":text") 所 有 type="text" 的 <input> 元 素
:password $(":password") 所 有 type="password" 的 <input> 元 素
:radio $(":radio") 所 有 type="radio" 的 <input> 元 素

4.内容筛选器

:empty $(":empty") 无子(元素)节点的所有元素
:contains(text) $(":contains('W3School')") 包含指定字符串的所有元素
:has(selector) $("p:has(span)") $("p:has(span)")
:parent $("td:parent") 选取所有带有子元素且包含文本的 <td> 元素

5.其他筛选器

:lang(language) $("p:lang(it)") 选取所有 lang 属性为 "it" 的 <p> 元素
:not(selector) $("input:not(:empty)") 所有不为空的 input 元素
:root :root 选择器选取文档的根元素。
:target :target 选择器可用于选取当前活动的目标元素
:hidden $("p:hidden") 所有隐藏的 <p> 元素
:visible $("table:visible") 所有可见的表格
:header $(":header") 所有标题元素 <h1> - <h6>
:animated 所有动画元素

jQuery选择器的性能优化
• 尽量使用CSS中有的选择器
• 避免过度约束
• 尽量以ID开头
• 让选择器的右边有更多特征
• 避免使用全局选择器
• 缓存选择器结果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容

  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,392评论 0 44
  • 第一章 jQuery简介 1-1 jQuery简介 1.简介 2.优势 3.特性与工具方法 1-2 环境搭建 进入...
    mo默22阅读 1,587评论 0 11
  • jQuery基础(一)——样式篇 1-2环境搭建 1-3 jQuery HelloWorld体验 $(docume...
    croyance0601阅读 1,086评论 0 8
  • 第一章 入门 基本功能:访问和操作 dom 元素,控制页面样式,对页面的事件处理,与ajax完美结合,有丰富的插件...
    X_Arts阅读 1,048评论 0 2
  • 1.class 和 id 的使用场景? 类选择器允许以一种独立于文档元素的方式来指定样式。该选择器可以单独使用,也...
    草鞋弟阅读 2,421评论 0 1