jQuery笔记——选择器

jQuery 最核心的组成部分就是:选择器引擎。它继承了 CSS 的语法,可以对 DOM 元 素的标签名、属性名、状态等进行快速准确的选择,并且不必担心浏览器的兼容性

常规选择器

根据id选择元素就是使用#,还有两种其他选择元素的方式,分别是根据元素名和class:

注意:根据ID返回的是一个DOM对象,而根据元素名和class的方式返回的都是多个(如果有的话)。可以使用.length 或 .size()方法来查看返回的元素个数,但是.size()方法在jQuery1.8被废弃,就只能使用.length了

如果使用不存在的ID选择会返回jQuery对象:

alert($('#pox'));            //(Object)pox是不存在的id

我们可以使用.length来判断该id的元素是否存在,大于0则表示存在 :

if ($('#pox').length > 0) { //判断元素包含数量即可
$('#pox').css('color', 'red');
}

 

还有一些较高级的选择器方便选择元素 :

$('span, em, .box').css('color', 'red'); //群组选择器
$('ul li a').css('color', 'red'); //后代选择器
$('*').css('color', 'red'); //通配选择器,这种使用方法效率很低,影响性能,建议竟可能少用

当选择器筛选越复杂,jQuery 内部的选择器引擎处理字符串的时间就越长

 

一般来说通过以上六种选择器基本上可以解决所有 DOM 节点对象选择的问题。但在很多特殊的元素上,比如父子关系的元素,兄弟关系的元素,特殊属性的元素等等,并且随着 jQuery 兼容,这些选择器的使用频率也越来越高:

 

后代选择器

$('#box p').css('color', 'red'); //全兼容

 jQuery 为后代选择器提供了一个等价 find()方法:

$('#box').find('p').css('color', 'red'); //和后代选择器等价

 

子选择器,孙子节点不可见

$('#box > p').css('color', 'red'); //兼容 IE6

 jQuery 为子选择器提供了一个等价 children()方法:

$('#box').children('p').css('color', 'red'); //和子选择器等价

 

next 选择器(下一个同级节点)

$('#box+p').css('color', 'red'); //兼容 IE6

 jQuery 为 next 选择器提供了一个等价的方法 next():

$('#box').next('p').css('color', 'red'); //和 next 选择器等价

 

nextAll 选择器(后面所有同级节点)

$('#box ~ p').css('color', 'red'); //兼容 IE6

jQuery 为 nextAll 选择器提供了一个等价的方法 nextAll():

$('#box').nextAll('p').css('color', 'red'); //和 nextAll 选择器等价

在 find()、next()、nextAll()和 children()这四个方法中,如果不传递参数,就相当于传递 了“*”,即任何节点,不建议不传参,不但影响性能,还会出现各种问题。

理论上来讲,jQuery 提供的方法 find()、next()、nextAll()和 children()运行速度要快,推荐使用这些方法

 

jQuery 还提供了更加丰富的方法来选择元素:

$('#box').prev('p').css('color', 'red'); //同级上一个元素
$('#box').prevAll('p').css('color', 'red'); //同级所有上面的元素 

 

nextUntil()和 prevUnitl()方法是选定同级的下面或上面的所有节点,选定非指定的所有元素,一旦遇到指定的元素就停止选定:

$('#box').prevUntil('p').css('color', 'red'); //同级上非指定元素选定,遇到则停止
$('#box').nextUntil('p').css('color', 'red'); //同级下非指定元素选定,遇到则停止

 

siblings()方法正好集成了 prevAll()和 nextAll()两个功能的效果,及上下相邻的所有元素 进行选定:

$('#box').siblings('p').css('color', 'red'); //同级上下所有元素选定
//等价于下面:
$('#box').prevAll('p').css('color', 'red'); //同级上所有元素选定
$('#box').nextAll('p').css('color', 'red'); //同级下所有元素选定

 

还可以使用属性选择器:

选定含有title这个属性的元素

$('a[title]').css('color', 'red');           

 

选定具有title=name这个属性=这个属性值的

$('a[title=num1]').css('color', 'red');

 

选定具有title这个属性且开头属性值匹配的

$('a[title=^num]').css('color', 'red'); /

 

选定具有title这个属性且结尾属性值匹配的

$('a[title$=num]').css('color','red');

 

选定具有title这个属性且属性值不想等num1的

$('a[title~=num1]').css('color','red');

 

选定具有多个属性且属性值匹配成功的

$('a[bbb][title=num1]').css('color','red');

还有一些属性选择器使用就不在列出来

 

过滤选择器

它其实也是一种选择器,而这种选择器类似与 CSS3里的伪类。和 CSS 中的伪类的语法类似:使用冒号(:)开头

 

 

$('li:first').css('background', '#ccc'); //第一个元素
$('li:last).css('background', '#ccc'); //最后一个元素
$('li:not(.red)).css('background', '#ccc'); //非 class 为 red 的元素
$('li:even').css('background', '#ccc'); //索引为偶数的元素,从0开始
$('li:odd).css('background', '#ccc'); //索引为奇数的元素,从0开始
$('li:eq(2)').css('background','#ccc'); //选择2的位置 从0开始
$('li:eq(-2)').css('background','#ccc'); //负数表示从末尾开始
$('li:gt(2)').css('background', '#ccc'); //大于索引值的元素,也存在负数
$('li:lt(2)').css('background', '#ccc'); //小于索引值的元素,也存在负数
$(':header').css('background', '#ccc'); //页面所有 h1 ~ h6 元素
$('h3:header').css('background','#ccc'); //指定为h3

:focus 过滤器,必须是网页初始状态的已经被激活焦点的元素才能实现元素获取。 而不是鼠标点击或者 Tab 键盘敲击激活的

$('input').get(0).focus(); //先初始化激活一个元素焦点
$(':focus').css('background', 'red'); //被焦点的元素

 

jQuery 为最常用的过滤器提供了专用的方法,已达到提到性能和效率的作用:

$('li').eq(2).css('background', '#ccc'); //元素 li 的第三个元素,负数从后开始
$('li').first().css('background', '#ccc'); //元素 li 的第一个元素
$('li').last().css('background', '#ccc'); //元素 li 的最后一个元素
$('li').not('.red').css('background', '#ccc'); //元素 li 不含 class 为 red 的元素

 

注意::first、:last 和 first()、last()这两组过滤器或方法在使用的时候,first 会实现第一个父元素的第一个子元素,last 会实现最后一个父元素的最后一个子元素。所以,需要明确是哪个父元素

 

子元素过滤器的过滤规则是通过父元素和子元素的关系来获取相应的元素:

 

$('li:first-child').css('background', '#ccc'); //每个父元素第一个 li 元素
$('li:last-child').css('background', '#ccc'); //每个父元素最后一个 li 元素
$('li:only-child').css('background', '#ccc'); //每个父元素只有一个 li 元素
$('li:nth-child(odd)').css('background', '#ccc'); //每个父元素奇数 li 元素
$('li:nth-child(even)').css('background', '#ccc'); //每个父元素偶数 li 元素
$('li:nth-child(2)').css('background', '#ccc'); //每个父元素第三个 li 元素

 

转载于:https://www.cnblogs.com/lz2017/p/6858506.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言实现NRZ编码,CSC1001-课后笔记

前言:为什么编写此文1. 根据费曼的学习方法Pretend to teach your topic to a classroom. Make sure youre able to explain the topic in simple terms. 假装你在教室里向学生解释这个主题,用尽量简单的词汇去描述它,力求学生能听懂。(听众…

LeetCode 111. Minimum Depth of Binary Tree

原题 Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 思路一 类似于求最大深度时的递归思路不过需要注意的是当某一节点的左子节点(右子节点类似)为空时…

c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...

C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟学 号:班 级: 自动化10班姓 名: 张指导老师: 胡2012.12单片机核心板实验要求流水灯实验实验目的:简单I/O引脚的输出掌握软件延时编程方法简单按键输入捕获判断完…

angularjs中的分页指令

自定义指令 import angular from angular;/*** ngdoc module* name components.page* description 分页directive*/ export default angular.module(pageDirective, []).directive(ngPage, function () {return {restrict: E,scope: {totalCount: ,pageSize: ,param: ,pageItme…

金币问题c语言程序,【求助】急请c语言高手帮忙解决程序问题(问题已经被我自己解决,金币送给自己啦)...

不好意思,这是程序后面部分:RHOMOLL,double* X, double& DRHODT);void (__stdcall *FGCTYdll)(double& TK, double& RHOMOLL,double* X, double& FUGACITY);// The following ifdef block is…

xv6/调度算法及并发程序设计

1 在proc.c的scheduler函数中,有两行: if(setjmp(&cpus[cpu()].jmpbuf) 0) longjmp(&p->jmpbuf); 把它修改为: cprintf("setjmp called in scheduler\n"); if(setjmp(&cpus[cpu()].jmpbuf) 0){ cprintf(&qu…

c语言四舍五入取整向上取整,C 语言常用的函数(ceil-向上取整,floor-向下取整,round-四舍五入)...

释放双眼,带上耳机,听听看~!1.ceil函数(向上取整)extern float ceilf(float); //参数为flot类型extern double ceil(double); //参数为double类型extern long double ceill(long double); //参数为long double类型举例:向上取整函…

PHP函数之HTMLSPECIALCHARS_DECODE

PHP函数之htmlspecialchars_decode htmlspecialchars_decode :将特殊的 HTML 实体转换回普通字符 htmlspecialchars: 将普通字符转换成实体转载于:https://www.cnblogs.com/lovebing/p/6866484.html

c语言中printk用法,printk和printf的区别

&&&大部分常用的C库函数在Linux内核中都已经得到了实现。在所有没有实现的函数中,最著名的就数printf()函数了。内核代码虽然无法调用printf()函数,但它可以调用printk()函数。printk()函数负责把格式化好的字符串拷贝到内核日志缓冲上&…

《Java技术》第八次作业

《Java技术》第八次作业 (一)学习总结 1.用思维导图对本周的学习内容进行总结。 2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用…

android 短信 aapp,谈谈App的统一跳转和ARouter

App中每次页面跳转,都需要调用统一导航, 它用的非常频繁, 有必要对它进行一下梳理. 让他能用起来简单方便, 同时能支持各种常用的跳转业务场景.一. Android跳转遇到的问题1.intent-filter跳转不好管理Intent intent new Intent();intent.setAction(Intent.ACTION_SENDTO);inte…

android 自定义spnner弹出框,PopupWindow,ListView实现自定义Spinner

最终的效果图,点击86弹出popup这里写图片描述PupupWindow的布局文件为一个ListView 作为pupup的主体内容android:orientation"vertical"android:layout_width"match_parent"android:layout_height"match_parent">android:id"id/register…

hdu 6026 Deleting Edges(最短路计数)

题目链接:hdu 6026 Deleting Edges 题意: 给你n个点,和一个邻接矩阵,非0表示有边,0表示没边。 现在让你删一些边,构成一棵树,使得每个点到0这个点的距离为没删边之前的最短路。 问有多少棵这样的…

android 服务端 导入工程,如何导入与配置从网上下载的android源代码及服务器端源代码...

将Android项目导入import进Eclipse。 注意SDK版本是否匹配 。 服务器部署到Tomcat下。 你得在数据库中将这个点菜系统的数据库和表建好,或者导入。在服务器的代码中修改好你的数据库名和密码。首先看你的服务器配置的是什么环境 一般就2种 linux系统 window系统&…

mysql: 模糊查询 feild like keyword or feild like keyword , concat(feild1,feild2,feild3) like keyword...

mysql: 模糊查询 feild like %keyword% or feild like% keyword% , 或者 concat(feild1,feild2,feild3) like %keyword% 转载于:https://www.cnblogs.com/achengmu/p/6877852.html

android按钮控件常见问题,Android的基本控件和Activity的应用总结

Android的基本控件常用界面控件TextView 显示文本信息button 普通按钮EditText 可编辑的文本框组件(输入框)ImageView 用于显示图片ImageBUtton 图片按钮CheckBox 复选框RadioGroup 单选按钮组Spinner 下拉列表组件ProgressBar进度条SeekBar拖动条RatingBar评分组件ListView列表…

Xamarin XAML语言教程构建进度条ProgressBar

Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件。进度条总是水平放置的。本节将讲解如何使用进度条。注意:进度条在各个平台下基本相同&#xf…

android tv字体,best登陆「永久地址0365.tv」android默认字体android使用代码使用新的字体的常用代码...

页面类类名称:MainActivitypackage com.example.android_fonts_test;import android.support.v7.app.ActionBarActivity;import android.content.Context;import android.graphics.Typeface;import android.os.Bundle;import android.view.Menu;import android.view…

android 交叉编译so,Android交叉编译htop和使用方法

htop来源于top,top是Unix/linux下功能强大的性能检测工具之一,用于实时检测并统计进程的属性和状态,基于ncurses库,可上显示文字界面。但是top已经非常陈旧,不支持鼠标点击操作,不支持查看进程的各个子线程…

Java笔记(08):面向对象--抽象类

1、抽象类概述: 1 /*2 抽象类的概述:3 动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的。4 我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该…