jQuery介绍和选择器

jQuery


来源饥人谷课件,转载请注明出处


jQuery介绍

jQuery使用查询

jQuery官网

jQuery 教程

为什么要用 jQuery

DOM API

难用
存在兼容性问题
功能太少,不能与时俱进

jQuery

兼容性好
API 友好
功能强大,与时俱进

jQuery使用场景

DOM 操作较多(事件监听)
简单的 AJAX
需要兼容多款浏览器

什么时候不用 jQuery

页面交互极为简单
页面对流量有苛刻的要求
上级强制、团队已经有了 jQuery 的代替品

jQuery 做什么

选择网页元素
改变结果集
元素的操作:取值和赋值
元素的操作:移动
元素的操作:复制、删除和创建
工具方法
事件操作
特殊效果
AJAX

jQuery 的两种 API(只有这两种用法,全是方法操作)

$.noConflict()
$.each()
$('ul').addClass()
$('p').text('hi')
简记:$.abc()  $('.xxx').abc()

ready

$(callback)
window.onload 事件
document 的 DOMContentLoaded 事件
$( document ).ready( handler )
$().ready( handler ) (this is not recommended)
$( handler )

jQuery选择器

引用jQuery

BootCDN 

使用unpkg.com发送至npm(主流)

使用jQuery获取元素

我们可以通过document.getElementById等方法获取DOM对象,但是方法名称长,使用不方便,而且功能有限,不能像CSS选择器那样灵活

jQuery定义了一套选择器规则,和CSS选择器目的一样,都是为了选择出符合特定规则的元素。讲jQuery不得不提到其选择器,这是jQuery能够快速流行的非常重要的原因,为了方便使用者jQuery刻意和CSS选择器使用相同的语法,几乎支持所有类型的CSS3选择器,当然也有一些其特定的选择器

选择器

基本选择器

$('\*') 匹配页面所有元素
$('#id')    id选择器
$('.class') 类选择器
$('element')    标签选择器

组合/层次选择器

$('E,F')    多元素选择器,用”,分隔,同时匹配元素E或元素F
$('E F')    后代选择器,用空格分隔,匹配E元素所有的后代(不只是子元素、子元素向下递归)元素F
$(E>F)  子元素选择器,用”>”分隔,匹配E元素的所有直接子元素
$('E+F')    直接相邻选择器,匹配E元素之后的相邻的同级元素F
$('E~F')    普通相邻选择器(弟弟选择器),匹配E元素之后的同级元素F(无论直接相邻与否)
$('.class1.class2') 匹配类名中既包含class1又包含class2的元素

基本过滤选择器

$("E:first")    所有E中的第一个
$("E:last") 所有E中的最后一个
$("E:not(selector)")    按照selector过滤E
$("E:even")             所有E中index是偶数
$("E:odd")              所有E中index是奇数
$("E:eq(n)")            所有E中index为n的元素
$("E:gt(n)")            所有E中index大于n的元素
$("E:lt(n)")            所有E中index小于n的元素
$(":header")    选择h1~h6 元素
$("div:animated")   选择正在执行动画效果的元素

内容过滤器

$('E:contains(value)')  内容中包含value值的元素
$('E:empty')    内容为空的元素
$('E:has(F)')   子元素中有F的元素,$('div:has(a)'):包含a标签的div
$('E: parent')  父元素是E的元素,$('td: parent'):父元素是td的元素

可视化选择器

$('E:hidden')   所有被隐藏的E
$('E:visible')  所有可见的E

属性过滤选择器

$('E[attr]')    含有属性attr的E
$('E[attr=value]')  属性attr=value的E
$('E[attr !=value]')    属性attr!=value的E
$('E[attr ^=value]')    属性attr以value开头的E
$('E[attr $=value]')    属性attr以value结尾的E
$('E[attr \*=value]')   属性attr包含value的E
$('E[attr][attr \*=value]') 可以连用

子元素过滤器

$('E:nth-child(n)') E的第n个子节点
$('E:nth-child(3n+1)')  E的index符合3n+1表达式的子节点
$('E:nth-child(even)')  E的index为偶数的子节点
$('E:nth-child(odd)')   E的index为奇数的子节点
$('E:first-child')  所有E的第一个子节点
$('E:last-child')   所有E的最后一个子节点
$('E:only-child')   只有唯一子节点的E的子节点

表单元素选择器

$('E:type') 特定类型的input
$(':checked')   被选中的checkbox或radio
$('option: selected')   被选中的option

.eq(index), .get([index])

对于一个特定结果集,我们想获取到指定index的jQuery对象,可以使用eq方法

$('div').eq(3);//获取结果集中的第四个jQuery对象

我们可以通过类数组下标的获取方式或者get方法获取指定index的DOM对象,也就是我们说的jQuery对象转DOM对象

$('div')[2];
$('div').eq(2);

get()不写参数把所有对象转为DOM对象返回。addClassList,removeClassList同样适用

兄弟元素的获取

.next([selector]), .prev([selector])

next取得匹配元素集合中的每一个元素紧邻的后面同辈元素的元素集合。如果提供一个选择器,那么只有紧跟着的兄弟元素满足选择器时,才会返回次元素。prev真好相反,获取元素之前的同辈元素

$('.test').next();
$('.test').prev('li');

.nextAll([selector]), .prevAll([selector])

nextAll获得每个匹配元素集合中每个元素所有后面的同辈元素,选择性筛选的选择器,而prevAll与之相反,获取元素前面的同辈元素

.siblings([selectors])

获得匹配元素集合中每个元素的兄弟元素,可以提供一个可选的选择器

$('li.third-item').siblings()

父子元素获取

.parent([selector])

取得匹配元素集合中,每个元素的父元素,可以提供一个可选的选择器

$('li.item-a').parent()

.parents([selector])

获得集合中每个匹配元素的祖先元素,可以提供一个可选的选择器作为参数

$('li.item-a').parents('div')

.children([selector])

获得匹配元素集合中每个元素的子元素,选择器选择性筛选

$('ul.level-2').children()

.find([selector])

查找符合选择器的后代元素

$('ul').find('li.current');

筛选当前结果集

.first()

获取当前结果集中的第一个对象

.last()

获取当前结果集的最后一个对象

.filter(selector), .filter(function(index))

筛选当前结果集中符合条件的对象,参数可以是一个选择器或者一个函数

$('li').filter(':even')

$('li').filter(function(index) {
  return index % 3 == 2;
})
image

.not(selector), .not(function(index))

从匹配的元素集合中移除指定的元素,和filter相反

.is(selector), is(function(index)), is(dom/jqObj)

判断当前匹配的元素集合中的元素,是否为一个选择器,DOM元素,或者jQuery对象,如果这些元素至少一个匹配给定的参数,那么返回true

if ( $target.is("li") ) {
$target.css("background-color", "red");
}

.has(selector), .has(dom)

筛选匹配元素集合中的那些有相匹配的选择器或DOM元素的后代元素

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

推荐阅读更多精彩内容