jQuery应用之(一)使用jQuery选择器(荐)
如上文(地址)jQuery预先的javascript的编程,提供了计划所有css3下的标准选择器,开发者可以利用这些选择器轻松选择各种元素,供javascript使用。
重要的是jQuery对这些选择器的兼容性特别好,主流的浏览器都测试通过,这使得理论上的css3选择器一下编程了事实。开发者可以按照以前的方法定义各种css类别,然后通过addClass()方法或者className属性将其添加到指定的元素集合中。
1.属性选择器
(属性可以参考jQuery文档或者http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp)
属性选择器的语法是在标记的后面用中括号"[" 和"]"添加相关属性,然后在赋予不同的逻辑关系。
以下为HTML
<li>第一个</li>
<li><a href="1-1.html">第二个</a></li>
<li><a href="1-2.html" title="第三个">第三个</a></li>
<li><a href="1-3.html">第四个</a></li>
<li><a href="1-4.html" title="制作">第五个</a></li>
如果希望选择设置了title属性的标记,则使用以下语法
$("a[title]")
给设置了title属性的两个超链接添加css样式
<style>
.altcss {
/* 设定某个CSS类别 */ background-color: #005890;
color: #4eff00;
}
</style>
<script type="text/javascript">
$(function() {
$("a[title]").addClass("altcss")
});
</script>
显示样式:
属性选择器还有很多种,大家可以参考各版本的jQuery的手册灵活使用,常用的有以下几类。
[attribute]
[attribute=value] //匹配给定的属性是某个特定值的元素
[attribute!=value] //匹配所有不含有指定的属性,或者属性不等于特定值的元素。
[attribute^=value] //匹配给定的属性是以某些值开始的元素
[attribute$=value] //匹配给定的属性是以某些值结尾的元素
[attribute*=value] //匹配给定的属性是以包含某些值的元素
例如匹配超链接以pdf结尾的元素,可以使用
$(function() {
$("li a[href$='pdf']")
});
2.包含选择器
jQuery还提供了包含选择器用来选择包含了某种特殊标记的元素,比如以下代码:
$("li:has(a)")
表示给包含了超链接的li元素
例如
$("div:has(p)").addClass("test");
表示给所有包含 p 元素的 div 元素添加一个 test 类
最后整理了jQuery支持的css3属性选择器,贡献查询。
选择器 | 说明 |
* | 所有的标记 |
E | 所有名称为E的标记 |
EF | 所有名称为F的标记,并且是E标记的子标记(包括孙,重孙标记) |
E>F | 所有名称为F的标记,并且是E标记的子标记(不包括孙标记) |
E+F | 所有名称为F的标记,并且该标记紧接着前面的E标记 |
E~F | 所有名称为F的标记,并且该标记前面有一个E标记 |
E:has(F) | 所有名称为E的标记,并且该标记包含F标记 |
E.C | 所有名称为E的标记,属性分类为C,如果去掉E,就是属性选择器.C |
E#I | 所有名称为E的标记,id为I,如果去掉E,就是ID选择器I |
E[A] | 所有名称为E的标记,并且设置了属性A |
E[A=V] | 所有名称为E的标记,并且属性A的值等于V |
E[A^=V] | 所有名称为E的标记,并且属性A的值以V开头 |
E[A$=V] | 所有名称为E的标记,并且属性A的值以V结尾 |
E[A *=V] | 所有名称为E的标记,并且属性A的值包含V |
纯属手打,如有错误,请指正 |
3.位置选择器
css3还允许通过标记所处的位置来进行选择,例如选择第一个li元素
$("li:first-child")
选择奇数行的li元素
$("li:nth-child(odd)")
需要注意的是:nth-child(odd)的选择器和li:odd选择出的结果是一样的,这是因为:nth-child的相关css 选择器是从1开始计数的,而其他的选择器是从0开始计数的。
例如以下
$("p:eq(4)").addClass()
匹配添加className的元素有5个。
以下整理了jQuery支持的css3位置选择器
选择器 | 说明 |
:first | 第一个元素 |
:last | 最后一个元素 |
:first-child | 第一个子元素 |
:last-child | 最后一个子元素 |
:only-child | 所有没有兄弟的元素,例如:p:only-child选中所有的p元素,如果该p元素是父元素的唯一子元素 |
:nth-child(n) | 第n个子元素(从1开始计数) |
:nth-child(odd/even) | 所有奇数号或者偶数号子元素(从1开始计数) |
:nth-child(nX+Y) | 利用公式来计算元素的位置,例如li:nth-child(5n+1),表示选中所有的li元素,并且这些li元素为父元素的的5n+1个元素(1,6,11,16...) |
:odd或者:even | 奇数或者偶数号元素 |
:eq(n) | 第n个元素(从0开始计数) |
:gt(n) | 第n个之后的所有元素(n从0开始计数,并且计算不包含第n本身) |
:lt(n) | 第n个之前的所有元素(n从0开始计数,并且计算不包含第n本身) |
纯属手打,如有错误,请指正 |
4.过滤选择器
除了css3中的一些选择器外,jQuery还提供了很多自定义的过滤选择器,用来处理更复杂的选择。例如很多时候希望知道用户所选中的复选框,如果通过属性值来判断,那么只能获得初始状态下选中的情况,而不是真实的选择情况。利用jQuery的:checked选择器则可以轻松获得用户的选择。
实例代码如下
<script src="http://apps.bdimg.com/libs/jquery/1.10.0/jquery.min.js"></script>
<script type="text/javascript">
function showChecked(oCheckBox){
//使用checked过滤出被用户选中的添加altcss
$("input[name="+oCheckBox+"]:checked").addClass("altcss");
}
</script>
<style>
.altcss {
/* 设定某个CSS类别 */
}
</style>
<form name="myform">
<p>
<label for="football">足球
<input type="checkbox" name="like" id="football" />
</label>
</p>
<p>
<label for="basketball">篮球
<input type="checkbox" name="like" id="basketball" />
</label>
</p>
<p>
<label for="volleyball">排球
<input type="checkbox" name="like" id="volleyball" />
</label>
</p>
<p>
<input type="button" value="显示选择" onclick="showChecked('like')">
</p>
</form>
另外,过滤器之间可以迭代使用。
:checkbox:checked:enabled
表示input type="checkbox"中所有被用户选中而且没有被禁用的。
以下整理了jQuery中常用的选择过滤器
选择器 | 说明 |
:animated | 所有处于动画中的元素 |
:button | 所有按钮,包括input[type=button]、[type=submit]、[type=reset]和<button>标记 |
:checkbox | 所有复选框,等同于input[type=checkbox]标记 |
:contains(foo) | 选择了包含文本"foo"的元素 |
:disabled | 页面中被禁用了的元素 |
:enabled | 页面中没有被禁用的元素 |
:file | 上传文件元素 |
:header | 选中所有的标题元素,如<h1><h6> |
:hidden | 页面中被隐藏了的元素 |
:image | 图片提交按钮,等同于input[type=image] |
:input | 表单元素,包括<input>,<select>,<textarea>,<button> |
:not(filter) | 反向选择 |
:parent | 选择所有子元素(包括文本)的元素,空元素将被排除 |
:password | 密码文本框,等同于input[type=password] |
:radio | 单选按钮,等同于input[type=radio] |
:reset | 重置按钮,等同于input[type=reset] |
:selected | 下拉菜单被选中的项 |
:submit | 提交按钮,包括input[type=submit]和button[type=submit] |
:text | 文本输入框,等同于input[type=text] |
:visble | 页面中的所有可见元素 |
纯属手打,如有错误,请指正 |
5.实现反向过滤
上述过滤器中的:not(filter)的过滤器可以进行反向选择,其中filter参数可以是任意其它的过滤选择器,例如下面代码表示<input>标记中所有非radio元素
input:not(:radio)
另外过滤选择器还可以迭代使用。
以下的例子就是使用jQuery的反向过滤功能。
<script src="http://apps.bdimg.com/libs/jquery/1.10.0/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
//迭代使用选择器
$(":input:not(:checkbox):not(:radio)").addClass("altcss");
});
</script>
<style>
.altcss {
background-color: #ffbff4;
text-decoration: underline;
border: 1px solid #0000FF;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
</style>
<form method="post" name="myForm1" action="addInfo.aspx">
<p>
<label for="name">姓名:</label>
<input type="text" name="name" id="name">
</p>
<p>
<label for="passwd">密码:</label>
<input type="password" name="passwd" id="passwd">
</p>
<p>
<label for="color">最喜欢的颜色:</label>
<select name="color" id="color">
<option value="red">红</option>
<option value="green">绿</option>
<option value="blue">蓝</option>
<option value="yellow">黄</option>
<option value="cyan">青</option>
<option value="purple">紫</option>
</select>
</p>
<p>性别:
<input type="radio" name="sex" id="male" value="male">
<label for="male">男</label>
<input type="radio" name="sex" id="female" value="female">
<label for="female">女</label>
</p>
<p>你喜欢做些什么:
<br>
<input type="checkbox" name="hobby" id="book" value="book">
<label for="book">看书</label>
<input type="checkbox" name="hobby" id="net" value="net">
<label for="net">上网</label>
<input type="checkbox" name="hobby" id="sleep" value="sleep">
<label for="sleep">睡觉</label>
</p>
<p>
<label for="comments">我要留言:</label>
<br>
<textarea name="comments" id="comments" cols="30" rows="4"></textarea>
</p>
<p>
<input type="submit" name="btnSubmit" id="btnSubmit" value="Submit">
<input type="reset" name="btnReset" id="btnReset" value="Reset">
</p>
</form>
以上代码中的选择器如下:
$(":input:not(:checkbox):not(:radio)").addClass("altcss");
表示所有的<input><select><textarea>或<button>中非checkbox和非radio的元素(这里要注意input和:input的区别),除了单选按钮和复选框,表单的其它元素都添加了altcss样式风格。
注意:在:not(filter)中,filter参数必须是过滤选择器,而不能是其它的选择器 ,下面的代码是典型的语法错误。
div:not(p:hidden)
正确的写法是
div p:not(:hidden)
jQuery应用之(一)使用jQuery选择器(荐)的更多相关文章
- jQuery入门(1)jQuery中万能的选择器
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- jquery总结01-基本概念和选择器
dom元素和jquery元素的区别 dom元素支持dom元素自带的属性和方法,jquery元素支持jquery元素自带的属性和方法 dom var div = doc ...
- 基于jQuery带备忘录功能的日期选择器
今天给大家分享一款基于jQuery带备忘录功能的日期选择器.这款日期控制带有备记忘录功能.有备忘录的日期有一个圆圈,单击圆圈显示备忘录.该实例适用浏览器:360.FireFox.Chrome.Safa ...
- 彻底抛弃PeopleEditor,SharePoint中利用Jquery Chosen创建新的人员选择器
彻底抛弃PeopleEditor,SharePoint中利用Jquery Chosen创建新的人员选择器 基于SharePoint平台开发时,人员选择器使用频率是非常高的,但是原生的人员选择器使用太麻 ...
- jquery系列教程7-自定义jquery插件全解:对象函数、全局函数、选择器
点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...
- jQuery系列 第四章 jQuery框架的选择器
第四章 jQuery框架的选择器 4.1 jQuery选择器说明 jQuery 最核心的组成部分就是选择器引擎.它完全继承了 CSS 的风格,可以对 DOM 元 素的标签名.属性名.状态等进行快速准确 ...
- JQuery(一)---- JQ的选择器,属性,节点,样式,函数等操作详解
JQuery的基本概念 JQuery是一个javascript库,JQuery凭借着简洁的语法和跨平台的兼容性,极大的简化了js操作DOM.处理事件.执行动画等操作.JQuery强调的理念是:'wri ...
- jQuery -- 光阴似箭(一):初见 jQuery -- 基本用法,语法,选择器
jQuery -- 知识点回顾篇(一):初见jQuery -- 基本用法,语法,选择器 1. 使用方法 jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数. ...
- jQuery学习笔记(简介,选择器)
jQuery优势 1. 强大的选择器.jQuery允许开发者使用从CSS1到CSS3几乎所有的选择器,以及jQuery独创的高级而复杂的选择器. 2. 出色的DOM操作封装 3. 可靠的事件处理机制 ...
- jQuery(二):jQuery选择器
jQuery选择器类似于CSS选择器,用来选取网页中的元素.例如: $("h3").css("background-color","red" ...
随机推荐
- Linux 学习之DNS服务器
概念: DNS:Domain Name System 域名系统 FQDN:Fully Qualified Domain Name 完整主机名 正向解析:由主机名查IP地址 SOA:开始验证(Start ...
- mysql存储过程procedure
传送门 http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html ) ); DROP PROCEDURE IF EXISTS ju ...
- OpenGL 学习笔记 01 环境配置
以下教程仅适用于Mac下的Xcode编程环境!其他的我也不会搞. 推荐教程:opengl-tutorial 本项目Github网址 OpenGL太可怕了...必需得把学的记下来,不然绝壁 ...
- nginx看端口使用情况
[root@iZ94j7ahvuvZ sbin]# netstat -apn Active Internet connections (servers and established) Proto R ...
- perl学习笔记
一.正则表达式 匹配一个文件中的某个单词,并打印出来 #!/usr/bin/perl use strict; use warnings; ; open(FILE, "< temp.pl ...
- java四舍五入的取舍
一.保留2位小数,且四舍五入 String re = new java.text.DecimalFormat("#.##").format(3.14555); 结果:3.15 二. ...
- ant+jenkins+testng+selenium集成环境搭建
一.前序工作 下载ant:http://ant.apache.org/bindownload.cgi 下载jenkins:http://jenkins-ci.org/ 下载testng:http:// ...
- 推荐——Monkey《大话 app 测试——Android、iOS 应用测试指南》
<大话移动——Android与iOS应用测试指南> 京东可以预购啦!http://item.jd.com/11495028.html 当当网:http://product.dangdang ...
- python中thread模块中join函数
http://www.cnblogs.com/vingi/articles/2657790.html for i in range(10): t = ThreadTest(i) thread_arr. ...
- Win8/8.1 .NET3.5安装失败
.NetFramework 作为开发人员,很多情况都需要.NetFramework,在Win7及之前的系统上直接双击 .NetFramework的安装包就可安装了. Win8/8.1无法安装.Net3 ...