jQuery:选择器使用详解

简介: 都说不会前端的测试不是一个好的后端开发。最近维护一个老的项目,其中的前端代码使用到了JQuery,由于自己以前对前端的了解并不是很多,没有系统的学习,都是遇到了问题才学习一下, 所以这次对Jquery进行了一次学习。

1 前言


都说不会前端的测试不是一个好的后端开发。最近维护一个老的项目,其中的前端代码使用到了JQuery,由于自己以前对前端的了解并不是很多,没有系统的学习,都是遇到了问题才学习一下, 所以这次对Jquery进行了一次学习。


jQuery 是 js 的一个库,封装了我们开发过程中常用的一些功能,方便我们调用,能够大大提高开发效率。js库是把我们常用的功能放到一个单独的文件中,我们用的时候,直接引用到页面里即可。而使用jQuery较多的就是进行DOM操作,其中就涉及到了选择器的使用。


所以这篇文章就整理一下,JQuery中关于选择器的使用。


2 什么是jQuery选择器


jQuery选择器的使用使得获得页面元素变得更加容易、更加灵活,从而大大减轻了开发人员的压力,提高开发效率,而不需要像使用原生的js一样使用 document 对象的 getElementById(),getElementsByName() 和 getElementsByTagName() 方法访问 Document中的某个标签。


首先来一个原生的js写法和Jquery的写法,体现其不一样的地方。


原生Js代码:


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            height: 100px;
            background-color: yellow;
            margin: 10px;
            display: none;
        }
</style>
    <script>
        //原生js
        window.onload = function () {
            var btn = document.getElementsByTagName("button")[0];
            var divArr = document.getElementsByTagName("div");
            btn.onclick = function () {
                for (var i = 0; i < divArr.length; i++) {
                    divArr[i].style.display = "block";
                    divArr[i].innerHTML = "1024笔记";
                }
            }
        }
</script>
</head>
<body>
<button>这是一个按钮</button>
<div></div>
</body>
</html>
复制代码


如果用 jQuery 来写,保持其他的代码不变,


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            height: 100px;
            background-color: yellow;
            margin: 10px;
            display: none;
        }
</style>
   //需要先引入jquery
   <script src="jquery-1.11.1.js"></script>
    <script>
        $(document).ready(function () {
            //获取元素
            //根据标签名获取按钮元素
            var jQbtn = $("button");
            //根据标签名获取div元素
            var jQdiv = $("div");
            //绑定事件
            //事件是通过方法绑定的。
            jQbtn.click(function () {
               //显示div内容
                jQdiv.show(1000);
                //设置内容
                jQdiv.html("1024笔记");
            });
        });
</script>
</head>
<body>
<button>这是一个按钮</button>
<div></div>
</body>
</html>
复制代码


上面的("button")和("button")和("button")("div")就是通过element选择器来获取标签元素。


JQuery的选择器基本可以分为以下九种:


  1. 基本选择器


  1. 层次选择器


  1. 基本过滤选择器


  1. 内容过滤选择器


  1. 可见性过滤选择器


  1. 属性过滤选择器


  1. 子元素过滤选择器


  1. 表单对象属性过滤选择器


  1. 表单选择器


接下来对这九种选择器一一进行说明。


3 选择器详解


一、基本选择器


1、ID选择器


栗子:获取所有id为demo1的元素


$('#demo1') 
复制代码


2、Element选择器


栗子:获取所有button的元素


$("button")
复制代码


3、Class选择器


栗子:获取所有class为demo2的元素


$(".demo2")
复制代码


注:Class和ID的区别在于id使用的符号是"#",而class使用的是"."。


4、*选择器


*表示遍历所有的元素,一般适用于结合上下文的搜索匹配,栗子:遍历获取demo3元素下所有元素:


$("demo3 *")
复制代码


5、并列选择器


并列选择器又叫多选择器。栗子:获取所有的input元素、或id="demo4"的元素、或class="demo5"元素


$("input, #demo4, .demo5")
复制代码


二、层次选择器


1、Parent>Child


直系子元素,匹配parent下第一层的子元素。栗子:id为list元素(父元素)里的第一代div元素(子元素):


$("#list > div")
复制代码


2、Prev + next


当前元素的下一兄弟元素。栗子:class="item"元素的下一个div兄弟元素:


$(".item + div")
复制代码


等同于next()方法,也可以写成:


$(".item").next("div")
复制代码


3、Prev ~ Sibling


当前元素后面的所有的兄弟元素。栗子:class="item"元素之后的所有div兄弟元素:


$(".item ~ div") 
复制代码


等同于nextAll()方法,也可以写成:


$(".item").nextAll("div")
复制代码


4、ancestor descendant


当前元素的所有的子元素,。栗子:id为list元素里所有的div元素:


$("#list div")
复制代码


三、基本过滤选择器


1、:first 和 :last


获取第一个或最后一个元素。栗子:获取第一个button元素


$("button:first") 
复制代码


栗子:获取最后一个input元素:


$("input:last") 
复制代码


2、:not


获取非元素。栗子:获取class不为demo的div元素


$("div:not(.demo)")
复制代码


3、eq(x)


获取指定索引的元素。栗子:获取tr标签的第3行:


$("tr:eq(2)")
复制代码


4、:even 和:odd


获取偶数或者奇数索引元素(下标从0开始),even为偶数;odd为奇数。栗子:获取tr标签下所有的偶数或奇数行


$("tr:even")
$("tr:odd")
复制代码


5、:gt(x) 和 :lt(x)


获取大于x索引或者小于x索引的元素。栗子:获取tr标签下第三行之前或第三行之后的元素:


$("tr:gt(2)")//第三行之前所有行
$("tr:lt(2)")//第三行之后所有行
复制代码


6、:header


获取所有标题元素元素(h1-h6标题)。栗子:


$(":header")
复制代码


四、表单选择器


1、:input


获取input元素。栗子:获取所有的input元素


$(":input")
复制代码


2、:text


获取text单行文本框元素。栗子:获取所有的text单行文本输入框元素


$(":text")
复制代码


如果使用input,可以写成:


$("input[type=text]") 
复制代码


3、:password


获取密码框元素。栗子:获取所有的密码输入框元素


$(":password")
复制代码


如果使用input,可以写成:


$("input[type=password]") 
复制代码


4、:radio


获取单选框元素。栗子:获取所有的单选框元素


$(":radio")
复制代码


如果使用input,可以写成:


$("input[type=radio]") 
复制代码


5、:checkbox


获取所有的复选框元素。栗子:获取所有的复选框框元素


$(":checkbox")
复制代码


如果使用input,可以写成:


$("input[type=checkbox]") 
复制代码


6、:image


获取图像按钮元素。栗子:获取所有的图像按钮元素


$(":image")
复制代码


如果使用input,可以写成:


$("input[type=image]") 
复制代码


7、:submit


获取所有的提交按钮元素。栗子:获取所有的提交按钮元素


$(":submit")
复制代码


如果使用input,可以写成:


$("input[type=submit]") 
复制代码


8、:reset


获取所有的重置按钮元素。栗子:


$(":reset")
复制代码


如果使用input,可以写成:


$("input[type=reset]") 
复制代码


9、:button


获取所有的按钮元素。栗子:


$(":button")
复制代码


如果使用input,可以写成:


$("input[type=button]") 
复制代码


10、:file


获取所有的上传控件元素。栗子:


$(":file")
复制代码


如果使用input,可以写成:


$("input[type=file]") 
复制代码


五、表单对象属性过滤选择器


1、:enable


获取所有激活的 input 元素。栗子:


$(":enabled")
复制代码


2、:disabled


获取所有禁用的 input 元素。栗子:


$(":disabled")
复制代码


3、:selected


获取所有被选取的 input 元素。:selected 选择器选取被选择的  元素。栗子:


$(":selected")
复制代码


4、:checked


获取所有被选中的 input 元素,:checked选择器选取所有选中的复选框或单选按钮。栗子:


$(":checked")
复制代码


六、可见性过滤选择器


1、:hidden


:hidden选择器选取每个当前是隐藏的元素。栗子:


$(":hidden")
复制代码


注:以下几种情况的元素是隐藏元素:


  • 设置为 display:none


  • 带有 type="hidden" 的表单元素


  • 隐藏的父元素(这也会隐藏子元素)


该选择器对 visibility:hidden 和 opacity: 0 的元素不起作用。


2、:visible


:visible 选择器选取每个当前是可见的元素。栗子:


$(":visible ")
复制代码


注:除以下几种情况之外的元素即是可见元素:


  • 设置为 display:none


  • type="hidden" 的表单元素


  • Width 和 height 设置为 0


  • 隐藏的父元素(同时隐藏所有子元素)


七、内容过滤选择器


1、:contains(text)


获取包含指定字符串的所有元素。栗子:


$(":contains('1024笔记')")
复制代码


2、:empty


获取不包含子元素或文本为空的元素。栗子:获取所有没有子元素,或者内容文本为空的div元素。


$('div:empty')
复制代码


3、:parent


选取包含子元素或文本的元素,与:empty相反。栗子:选取所有带有子元素或包含文本的  元素:


$("td:parent")
复制代码


4、:has


选取指定子元素的元素。栗子:选取所有包含有 元素在其内的


元素:


$("p:has(span)")
复制代码


八、属性过滤选择器


1、[attribute]


获取拥有attribute属性的所有元素。栗子:获取所有拥有title属性的a标签


$("a[title]")
复制代码


2、[attribute=value]和[attribute!=value]


获取attribute属性等于或不等于value的所有元素。栗子:获取所有拥有title属性的值等于/不等于1024笔记的a标签


$("a[title="1024笔记"]")
$("a[title!="1024笔记"]")
复制代码


3、[attribute^=value],[attribute$=value]和[attribute*=value]


获取attribute属性以value开始或以value结束或包含value的所有元素。栗子:


$('a[title^="1024笔记"]') 
$('a[title$="1024笔记"]') 
$('a[title*="1024笔记"]')
复制代码




4、[selector1][selector2]


复合型属性过滤器,获取同时满足多个条件的元素。栗子:获取所有title以1024笔记开头,且class="demo"的a标签


$('a[title^="1024笔记"][class="demo"]')
复制代码


九、子元素过滤选择器


1、:first-child 和 :last-child


获取第一个或最后一个子元素合并后的元素集合。栗子:


$('div:first-child')
 $('div:last-child')
复制代码


注: :fisrst 和 :last 返回的都是单个元素,而 :first-child 和 :last-child 返回的都是集合元素。比如 div:first 返回的是整个 DOM 文档中第一个 div 元素,而 div:first-child 是返回所有每个 div 元素下的第一个元素合并后的集合。


2、:only-child


获取当某个元素有且仅有一个子元素。栗子:


$('div:only-child')
复制代码


3、:nth-child(x)


获取第N个子元素。栗子:


$('div:nth-child(1)')
复制代码


**注:**除了 :nth-child(x),还有 :nth-child(even) 和 :nth-child(odd)。


$('tr:nth-child(even)')
$('tr:nth-child(odd)')
复制代码


4 结尾


以上就是就是Jquery关于选择器的使用。个人对前端知识掌握有限,如有错误和问题,欢迎交流讨论。

目录
相关文章
N..
|
5月前
|
JavaScript 前端开发 开发者
jQuery选择器
jQuery选择器
N..
38 1
|
6天前
|
JavaScript 索引
jQuery 选择器
jQuery 选择器
23 5
|
4月前
|
JavaScript 前端开发
jQuery 选择器
jQuery 选择器
26 0
|
4月前
|
JavaScript 前端开发 索引
jQuery的选择器与自带函数详解
jQuery的选择器与自带函数详解
|
6天前
|
JavaScript 前端开发 CDN
jQuery学习记录--jQuery语法,选择器,事件及hide(),show(), toggle()
本文是关于jQuery的学习笔记,涵盖了jQuery的简介、语法、选择器、事件处理以及hide()、show()、toggle()等方法的使用。
jQuery学习记录--jQuery语法,选择器,事件及hide(),show(), toggle()
|
15天前
|
JavaScript
jQuery 选择器
jQuery 选择器
20 3
|
20天前
|
JavaScript 索引
jQuery 选择器
jQuery 选择器
23 1
|
2月前
|
JavaScript 索引
jQuery的选择器有几种?
jQuery的选择器有几种?
31 1
|
5月前
|
JavaScript 前端开发 搜索推荐
JQuery EasyUI -- 日历选择器,2024年最新程序员经验分享
JQuery EasyUI -- 日历选择器,2024年最新程序员经验分享
|
5月前
|
JavaScript 前端开发
【Web 前端】 jQuery 里的 ID 选择器和 class 选择器有何不同?
【5月更文挑战第1天】【Web 前端】 jQuery 里的 ID 选择器和 class 选择器有何不同?