深入学习jQuery选择器系列第一篇——基础选择器和层级选择器
前面的话
选择器是jQuery的根基,在jQuery中,对事件处理、遍历DOM以及ajax操作都依赖于选择器。jQuery选择器完全继承了CSS的风格,两者的写法十分相似,只不过两者的作用效果不同。CSS选择器找到元素后添加样式,而jQuery选择器找到元素后添加行为。jQuery选择器可以分为基础选择器、层级选择器、过滤选择器和表单选择器四类。对于每类选择器,除了给出jQuery选择器的写法,也会给出相应的CSS选择器和DOM选择器的写法。有所比较,才能理解得更深。本文是jQuery选择器系列第一篇——基础选择器和层级选择器
基础选择器
基础选择器是jQuery中最常用选择器,也是最简单的选择器,它通过元素id、class和标签名等来查找DOM元素
id选择器
id选择器$('#id')通过给定的id匹配一个元素,返回单个元素
<div id="test">测试元素</div>
<script>
//选择id为test的元素并设置其字体颜色为红色
$('#test').css('color','red');
</script>
对应CSS的id选择器
#test{color:red}
对应DOM的getElementById()方法,而jQuery内部也使用该方法来处理ID的获取
document.getElementById('test').style.color = 'red';
元素选择器
元素选择器$('element')根据给定的元素名匹配元素,并返回符合条件的集合元素
<div>1</div>
<div>2</div>
<script>
//选择标签名为div的元素并设置其字体颜色为红色
$('div').css('color','red');
</script>
对应CSS的元素选择器
div{color:red}
对应DOM的getElementsByTagName()方法,而jQuery内部也使用该方法来处理元素名的获取
Array.prototype.forEach.call(document.getElementsByTagName('div'),function(item,index,arr){
item.style.color = 'red';
});
类选择器
类选择器$('.class')根据给定的类名匹配元素,并返回符合条件的集合元素
<div class="test">1</div>
<div class="test">2</div>
<script>
//选择class为test的元素并设置其字体颜色为红色
$('.test').css('color','red');
</script>
对应CSS的类选择器
.test{color:red}
对应DOM的getElementsByClassName()方法,而jQuery内部也使用该方法来处理类名的获取
Array.prototype.forEach.call(document.getElementsByClassName('test'),function(item,index,arr){
item.style.color = 'red';
});
通配选择器
通配选择器$('*')匹配文档中所有的元素,并返回集合元素
$('*').css('margin','0');
对应CSS的通配选择器
* {margin:}
对应DOM的document.all集合
Array.prototype.forEach.call(document.all,function(item,index,arr){
item.style.margin = 0;
});
或者参数为通配符*的getElementsByTagName()方法
Array.prototype.forEach.call(document.getElementsByTagName('*'),function(item,index,arr){
item.style.margin = 0;
});
群组选择器
群组选择器$('selector1,selector2,...')将每一个选择器匹配到的元素合并后一起,并返回集合元素
<div class="a">1</div>
<span id="b">2</span>
<a href="#">3</a>
<script>
//选择符合条件的元素并设置其字体颜色为红色
$('.a,#b,a').css('color','red');
</script>
对应CSS的群组选择器
.a,#b,a{color:red}
对应DOM的querySelectorAll()选择器
Array.prototype.forEach.call(document.querySelectorAll('.a,#b,a'),function(item,index,arr){
item.style.color = 'red';
});
层级选择器
如果想通过DOM元素之间的层级关系来获取特定元素,层级选择器是一个非常好的选择。层级共包括后代元素、子元素、相邻元素和同级元素四种
后代选择器
后代选择器$('ancestor descendant')选择给定的祖先元素的所有后代元素,并返回集合元素
<div id="test">
<div>
<div>1</div>
<div>2</div>
</div>
</div>
<script>
$('#test div').css('margin','10px');
console.log($('#test div').length);//
</script>
对应CSS的后代选择器
#test div{margin: 10px}
对应DOM的getElement类方法
Array.prototype.forEach.call(document.getElementById('test').getElementsByTagName('div'),function(item,index,arr){
item.style.margin = '10px';
});
或者使用querySelectorAll()方法
Array.prototype.forEach.call(document.querySelectorAll('#test div'),function(item,index,arr){
item.style.margin = '10px';
});
子元素选择器
子元素选择器$('parent > child')选择所有指定'parent'元素中指定的'child'的直接子元素,并返回集合元素
<div id="test">
<div>
<div>1</div>
<div>2</div>
</div>
</div>
<script>
$('#test > div').css('margin','10px');
console.log($('#test > div').length);//1
</script>
对应CSS的子元素选择器
#test > div{margin: 10px}
对应DOM的querySelectorAll()方法
Array.prototype.forEach.call(document.querySelectorAll('#test > div'),function(item,index,arr){
item.style.margin = '10px';
});
一般兄弟选择器
一般兄弟选择器$('prev ~ siblings')选择'prev'元素之后的所有同级的'siblings'元素,并返回集合元素
<ul>
<li id="test">1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
$('#test ~ li').css('color','red');
console.log($('#test ~ li').length);//2
</script>
对应CSS的一般兄弟选择器
#test ~ li{color:red;}
对应DOM的querySelectorAll()方法
Array.prototype.forEach.call(document.querySelectorAll('#test ~ li'),function(item,index,arr){
item.style.color = 'red';
});
相邻兄弟选择器
相邻兄弟选择器$('prev + next')选择所有紧跟在'prev'元素后的'next'元素,并返回集合元素
<ul>
<li id="test">1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
$('#test + li').css('color','red');
console.log($('#test + li').length);//
</script>
对应CSS的相邻兄弟选择器
#test + li{color:red;}
对应DOM的querySelectorAll()方法
Array.prototype.forEach.call(document.querySelectorAll('#test + li'),function(item,index,arr){
item.style.color = 'red';
});
深入学习jQuery选择器系列第一篇——基础选择器和层级选择器的更多相关文章
- 任务驱动,Winform VS WEB对比式学习.NET开发系列第一篇------身份证解析(不断更新的WEB版本及Winform版本源码)
一 本系列培训随笔适用人群 1. 软件开发初学者 2. 有志于转向Web开发的Winform程序员 3. 想了解桌面应用开发的Web程序员 二 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分 ...
- Webpack系列-第一篇基础杂记
前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然只是一个工具,但内部涉及到非常多的知识,之前一直靠CV来解决问题,之知其然不知其所以然,希望这次能整理一下相关的知识点. ...
- Entity Framework 6.0 入门系列 第一篇
Entity Framework 6.0 入门系列 第一篇 好几年前接触过一些ef感觉不是很好用,废弃.但是 Entity Framework 6.0是经过几个版本优化过的产物,性能和功能不断完善,开 ...
- 深入理解javascript函数系列第一篇——函数概述
× 目录 [1]定义 [2]返回值 [3]调用 前面的话 函数对任何一门语言来说都是一个核心的概念.通过函数可以封装任意多条语句,而且可以在任何地方.任何时候调用执行.在javascript里,函数即 ...
- [译]PrestaShop开发者指南 第一篇 基础
# 第一篇 基础 PS(PrestaShop简称)一开始就设定了能够在它的基础上很简单的构建第三方模块的机制,让它成为一款具有极高定制性的电子商务软件. PS的可以在三个方面进行定制: * 主题 * ...
- 深入理解javascript函数系列第一篇
前面的话 函数对任何一门语言来说都是核心的概念.通过函数可以封装任意多条语句,而且可以在任何地方.任何时候调用执行.在javascript里,函数即对象,程序可以随意操控它们.函数可以嵌套在其他函数中 ...
- 深入学习jQuery选择器系列第二篇——过滤选择器之子元素选择器
× 目录 [1]通用形式 [2]反向形式 [3]首尾元素 [4]唯一元素 前面的话 在上一篇中已经介绍过基础选择器和层级选择器,本文开始介绍过滤选择器.过滤选择器是jQuery选择器中最为庞大也是最为 ...
- 从零开始学习jQuery (一) 开天辟地入门篇
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章是入门第一篇, 主要是简单介绍jQuer ...
- 深入理解javascript对象系列第一篇——初识对象
× 目录 [1]定义 [2]创建 [3]组成[4]引用[5]方法 前面的话 javascript中的难点是函数.对象和继承,前面已经介绍过函数系列.从本系列开始介绍对象部分,本文是该系列的第一篇——初 ...
随机推荐
- 在centos7(EL7.3 即 kernel-3.10.0-514.X )上安装BCM4312无线网卡驱动要注意的问题
我新装的centos7主机无法使用里面自带的网卡,查询后发现网卡型号为BCM4312.我在看资料安装的过程中遇到了些问题,纠结了好久,现在分享下要注意的点,为后来的遇到同样问题的人提供点帮助.现在开始 ...
- ASP.NET MVC Model验证(五)
ASP.NET MVC Model验证(五) 前言 上篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现, 然而在MVC框架中还给我们提供了其它 ...
- 如何利用 Visual Studio 自带工具提高开发效率
Visual Stuido 是一款强大的Windows 平台集成开发工具,你是否好好地利用了它呢? 显示行号 有些时候(比如错误定位)的时候,显示行号将有利于我们进行快速定位. 如何显示 1. 工具 ...
- ABP(现代ASP.NET样板开发框架)系列之16、ABP应用层——数据传输对象(DTOs)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之16.ABP应用层——数据传输对象(DTOs) ABP是“ASP.NET Boilerplate Project ...
- ABP教程-给项目添加SwaggerUI,生成动态webapi
上一篇,我们是正式将ABP生成的代码项目,跑起来了,然后演示了下多租户的不同.那么这篇我们就来实现下SwaggerUI. Q:SwaggerUI是干什么的呢? A:他是一个能将我们的webapi,通过 ...
- Jquary入门(添加 修改 表单元素)+ JSON+弹框
字符串拼接 计算机语言 都是 对 数据的处理(获取/修改数据) 添加元素 除了 固定的方法添加 以外 都是 字符串拼接(拼接成固定格式即可执行). 1.表单添加元素 append() 方 ...
- 学习WCF入门的第一个实例
一.概述 WCF说白了就是一个基于终结点的通信手段!就是Service端提供一定的功能实现,然后暴露出一个或多个终结点,Client端调用Service端的功能(可以理解为调用一个函数),那么Clie ...
- 苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转
昨天下午,测试提了一个bug,问题是:在苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转. 思前想后找了半天没思路,后来经过同事的点拨,说可能是禁用了cookie之类的,反正我也没思路就顺 ...
- css3圆环百分比,菜单栏定位导航
前段时间,社区个人中心改版,看了下设计图,当时隐约感觉到有两个地方(圆环百分比,菜单栏定位导航)比较麻烦.设计图大致如下: 首先看圆环百分比,网上的做法大致分两种,一种是用了CSS3中的transfo ...
- 01.Web大前端时代之:HTML5+CSS3入门系列~初识HTML5
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 文档申明 <!--文档类型申明,html代表是ht ...