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教程(29)-jQuery插件开发之为插件方法指定参数

jQuery教程(28)-jQuery插件开发之使用插件

jQuery教程(27)-jQueryajax操作之修改默认选项

jQuery教程(26)-ajax操作之使用JSONP加载远程数据

jQuery教程(25)-ajax操作之安全限制

时间: 2024-11-08 14:02:41

jQuery学习笔记(一)使用jQuery选择器(荐)的相关文章

jQuery学习笔记之可见性过滤选择器

可见性过滤选择器是根据元素的可见和不可见状态来选择相应的元素. 显示隐藏的例子: <!DOCTYPE html> <html> <head> <script src="/jquery/jquery-1.11.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#hide

jQuery学习笔记之二——常规选择器

jQuery 最核心的组成部分就是: 选择器引擎. 它继承了 CSS 的语法, 可以对 DOM 元素的标签名. 属性名. 状态等进行快速准确的选择, 并且不必担心浏览器的兼容性. 简单选择器#box { //使用 ID 选择器的 CSS 规则color:red; //将 ID 为 box 的元素字体颜色变红}在jQuery 选择器里,我们使用如下的方式获取同样的结果: $('#box').css('color', 'red'); //获取 DOM 节点对象,并添加行为 选择器 CSS 模式 jQ

jQuery学习笔记(一)——选择器

常规选择器: 1.$('#box') ID选择器,获取一个ID为box的DOM对象 2.$('.box') CLASS选择器,获取一个class为box的DOM对象 3.$('div') 元素名选择器,获取一个元素名为div的DOM对象 进阶选择器: 1.$('div,#box,.box') 群组选择器,获取元素名为div.ID为box.class为box的DOM对象 2.$('div #box') 后代选择器,获取div中ID为box的DOM对象 另一种写法$('div').find('#bo

Jquery学习笔记-表单元素选择器

1. :input表单选择器可以实现,它的功能是返回全部的表单元素,不仅包括所有<input>标记的表单元素,而且还包括<textarea>.<select> 和 <button>标记的表单元素,因此,它选择的表单元素是最广的. $("#frmTest :input")表单选择器代码获取了表单中的全部元素 2. :text表单文本选择器可以获取表单中全部单行的文本输入框元素,单行的文本输入框就像一个不换行的字条工具,使用非常广泛. 通过:

Jquery学习笔记:获取jquery对象的基本方法

jquery最大的好处是将js对html页面的操作(读写)进行了封装,隔离了浏览器的差异性,并简化了操作,和提供了强大的功能. 在web页面中,所有的js操作都是围绕操作dom对象来的.而jquery对象就是对dom对象的封装.整个jquery代码的主要工作就是获取相应的jquery对象,然后调用对象的各种方法进行操作.也就是获取jquery对象是编写代码的核心和基础. 通过jquery提供的方式,可以有很多种获取jquery对象的方法,下面会介绍一些常用的方式. 在jquery中,是通过各式各

Jquery学习笔记:利用jquery获取select下拉框的值

jquery不是特别熟练,每次使用不常用的就要百度,特地记录下来. 我的下拉框是: <div class="form-group"> <select class="form-control" id="iv_level"> <option value="">店员</option> <option value="">店长</option>

JQuery学习笔记(1)

JQuery学习笔记(1) 认识JQuery 简介 JQuery是一个JavaScript库,语法简洁,有跨平台的兼容性,简化了开发人员遍历html文档.操作dom.处理事件.执行动画和开发Ajax的操作.理念是:写得少,做得多. 优点 1.轻量级.UglifyJS压缩后大小保持在30KB 2.选择器强大. 3.DOM操作封装. 4.可靠地事件处理机制. 5.完善的Ajax. 库类型 jquery.js(开发版) 约229kb,用于学习和开发. jquery.min.js(生产版) 约31kb,

jQuery学习笔记——jQuery常规选择器

一.简单选择器在使用 jQuery 选择器时,我们首先必须使用“$()”函数来包装我们的 CSS 规则.而CSS 规则作为参数传递到 jQuery 对象内部后,再返回包含页面中对应元素的 jQuery 对象.随后,我们就可以对这个获取到的 DOM 节点进行行为操作了.#box {//使用 ID 选择器的 CSS 规则color:red;//将 ID 为 box 的元素字体颜色变红}在 jQuery 选择器里,我们使用如下的方式获取同样的结果:$('#box').css('color', 'red

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

jQuery学习笔记(2014年8月3日)事件委派

jQuery中的事件委托是通过 closest() 来完成的. closest() 方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上. 参考资料: jQuery 遍历 - closest() 方法http://www.w3school.com.cn/jquery/traversing_closest.asp jQuery学习笔记(2014年8月3日)事件委派