前面的话

  选择器是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选择器系列第一篇——基础选择器和层级选择器的更多相关文章

  1. 任务驱动,Winform VS WEB对比式学习.NET开发系列第一篇------身份证解析(不断更新的WEB版本及Winform版本源码)

    一 本系列培训随笔适用人群 1. 软件开发初学者 2. 有志于转向Web开发的Winform程序员 3. 想了解桌面应用开发的Web程序员 二 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分 ...

  2. Webpack系列-第一篇基础杂记

    前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然只是一个工具,但内部涉及到非常多的知识,之前一直靠CV来解决问题,之知其然不知其所以然,希望这次能整理一下相关的知识点. ...

  3. Entity Framework 6.0 入门系列 第一篇

    Entity Framework 6.0 入门系列 第一篇 好几年前接触过一些ef感觉不是很好用,废弃.但是 Entity Framework 6.0是经过几个版本优化过的产物,性能和功能不断完善,开 ...

  4. 深入理解javascript函数系列第一篇——函数概述

    × 目录 [1]定义 [2]返回值 [3]调用 前面的话 函数对任何一门语言来说都是一个核心的概念.通过函数可以封装任意多条语句,而且可以在任何地方.任何时候调用执行.在javascript里,函数即 ...

  5. [译]PrestaShop开发者指南 第一篇 基础

    # 第一篇 基础 PS(PrestaShop简称)一开始就设定了能够在它的基础上很简单的构建第三方模块的机制,让它成为一款具有极高定制性的电子商务软件. PS的可以在三个方面进行定制: * 主题 * ...

  6. 深入理解javascript函数系列第一篇

    前面的话 函数对任何一门语言来说都是核心的概念.通过函数可以封装任意多条语句,而且可以在任何地方.任何时候调用执行.在javascript里,函数即对象,程序可以随意操控它们.函数可以嵌套在其他函数中 ...

  7. 深入学习jQuery选择器系列第二篇——过滤选择器之子元素选择器

    × 目录 [1]通用形式 [2]反向形式 [3]首尾元素 [4]唯一元素 前面的话 在上一篇中已经介绍过基础选择器和层级选择器,本文开始介绍过滤选择器.过滤选择器是jQuery选择器中最为庞大也是最为 ...

  8. 从零开始学习jQuery (一) 开天辟地入门篇

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章是入门第一篇, 主要是简单介绍jQuer ...

  9. 深入理解javascript对象系列第一篇——初识对象

    × 目录 [1]定义 [2]创建 [3]组成[4]引用[5]方法 前面的话 javascript中的难点是函数.对象和继承,前面已经介绍过函数系列.从本系列开始介绍对象部分,本文是该系列的第一篇——初 ...

随机推荐

  1. MySQL: Fabric 搭建 HA

    搭建好Fabric之后,就可以在它的基础上创建HA Group. Shard Group.HA+Shard Group等.这里来说明一下如何快速的搭建HA环境. Fabric 192.168.2.23 ...

  2. MongoDB学习笔记三—增删改文档上

    插入insert 单条插入 > db.foo.insert({"bar":"baz"}) WriteResult({ }) 批量插入 > db.fo ...

  3. Linux基础介绍【第五篇】

    linux权限位 Linux文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件属主权限.属组权限.其他用户权限. r:read可读权限,对应数字4: w:write可写权限,对应数字 ...

  4. Linux网卡驱动安装、防火墙原理

    安装网卡驱动程序: 需要检查是否安装kernel依赖包: rpm –q kernel-devel #检查kernel依赖包是否安装 yum –y install kernel-devel 检查gcc和 ...

  5. 挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法

    转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...

  6. 理解Session与Cookie

    写在前面的话:Session和Cookie是非常有意思的两个概念,对于两者的管理可以处理的很复杂,但是无论如何,理解Session和Cookie的基本概念和发明初衷,对于问题的解决,大有裨益. === ...

  7. Apache thrift RPC 双向通信

    在上一篇介绍Apache thrift 安装和使用,写了一个简单的demo,讲解thrift服务的发布和客户端调用,但只是单向的客户端发送消息,服务端接收消息.而客户端却得不到服务器的响应. 在不涉及 ...

  8. 如何处理CSS3属性前缀

    今天闲来无聊,重新来说说CSS3前缀的问题.在春节前和@一丝姐姐说起Sass中有关于gradient的mixins.姐姐说: 为什么还要用mixin呢?为什么不使用Autoprefixer?使用Aut ...

  9. <a>与文件下载-(下载一)

    <a>可直接下载xls,doc,rar,zip,exe,js文件(图片跟txt文件是直接打开的) <a href="wKioJlJolKeCIzkCADd3Wf7OPI42 ...

  10. 前端学HTTP之网络基础

    × 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就 ...