一、jquery 简介
1. 什么是jquery
1. jquery:是一个轻量级的js库
2. jQuery库包含以下功能:
1.HTML 元素选取
2.HTML 元素操作
3.CSS 操作
4.HTML 事件函数
5.JavaScript 特效和动画
6.HTML DOM 遍历和修改
7.AJAX
8.Utilities
3. jquery的优点跟特征
jquery的优点:写的少做的多
jquery的特征:
1.强大的元素选择器:使用的是css1-css3所有选择器
2.简化了dom操作
3.优化了事件机制
4.ajax
5.插件
二、jquery语法
1.先看jquery源码
源码中:
window.jQuery==window.$=jQuery
jQuery在源码是一个函数,该函数内部返回 jQuery.fn.init 对象
jQuery.fn=jQuery.prototype
2.使用jquery:
a. 标识符: $ 或 jQuery + () 执行
b. 要使用jquery 需要先引入jquery 的库
如果元素初始化了,直接写jquery代码。如果元素未初始化,写dom加载完成事件
dom加载完成事件
<body>
<script src="js/jquery-1.9.1.js"></script>
<script>
$(window).ready(function (){
console.log("dom加载完成");
});
//简写
$(function (){
console.log("简写");
});
</script>
</body>
三、jquery引入方法
1.本地引入:
<body>
<script src="./js/jquery-1.9.1.js"></script>
</body>
2.远程引入:
<body>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js" type="text/javascript"></script>
</body>
3.引入cdn:
<body>
<script src="js/jquery-1.9.1.js"></script>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
</body>
四、jquery选择器
1. 基本
- *选择器
匹配所有元素,找到每一个元素
<body>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("*"));
</script>
</body>
- element选择器
根据给定的元素标签匹配所有元素
<body>
<button class="btn">按钮</button>
<button class="btn" id="an1">按钮</button>
<button class="btn" id="an2">按钮</button>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("button"));
</script>
</body>
- class选择器
根据给定的css类名匹配元素
<body>
<button class="btn">按钮</button>
<button class="btn" id="an1">按钮</button>
<button class="btn1" id="an2">按钮</button>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($(".btn"));
</script>
</body>
- id选择器
根据给定的ID匹配一个元素
<body>
<button class="btn">按钮</button>
<button class="btn" id="an1">按钮</button>
<button class="btn1" id="an2">按钮</button>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("#an1"));
</script>
</body>
- 复合选择器
将每一个选择器匹配到的元素合并后一起返回
<body>
<button class="btn">按钮</button>
<button class="btn" id="an1">按钮</button>
<button class="btn1" id="an2">按钮</button>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("#an1,#an2"));
</script>
</body>
2. 层级
- 匹配所有ul里面的li
在给定的祖元素下匹配所有后代元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul li"));
</script>
</body>
- 匹配ul.menu里面所有的li
在给定的父元素下匹配所有的子元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu>li"));
</script>
</body>
- 匹配ul.menu里面li的第一个子集紧跟其后的元素
:nth-child 匹配其父元素下的第N个子或奇偶元素
- 匹配紧跟其后的元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu>li:nth-child(1)+li"));
</script>
</body>
- 匹配ul.menu里面li的第一个子集里面所有的元素
~ 匹配元素之后所有的元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu>li:nth-child(1)~li"));
</script>
</body>
- 获取.menu里面li的第一个元素
:first 获取第一个元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu>li:first"));
</script>
</body>
- 获取.menu里面li的第一个子元素
:first-child 匹配所给选择器的第一个子元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu>li:first-child"));
</script>
</body>
- 去除.menu里面的li的.child元素
:not(selector) 去除所有与给定选择器匹配的元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu>li:not(.child)"));//:not(selector)
</script>
</body>
- 匹配.menu里面li所有为偶数的元素
:even 匹配所有索引值为偶数的元素,从0开始计数
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu>li:even"));
</script>
</body>
- 匹配.menu里面li所有为奇数的元素
:odd 匹配所有索引值为偶数的元素,从0开始计数
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu>li:odd"));
</script>
</body>
- 匹配.menu里面的li的索引值为3的元素
匹配一个给定索引值的元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($(".menu>li:eq(3)"));
</script>
</body>
- 匹配.menu里面的li的索引值小于2的元素
匹配所有小于给定索引值的元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($(".menu>li:lt(2)"));
</script>
</body>
- 匹配.menu里面的li的索引值大于2的元素
匹配所有大于给定索引值的元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($(".menu>li:gt(2)"));
</script>
</body>
3.基本筛选器
- :header
匹配如 h1, h2, h3之类的标题元素
<body>
<h1>1111</h1>
<h2>2222</h2>
<h3>3333</h3>
<h4>4444</h4>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("body :header"));
</script>
</body>
- :root
选择该文档的根元素,永远是元素
<body>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($(":root"));
</script>
</body>
-:focus
匹配当前获取焦点的元素
<head lang="en">
<title></title>
<style>
input:focus{
color: red;
}
</style>
</head>
<body>
<input type="text" id="user" class="ipt"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
$("input").focus(); //默认获得焦点
console.log($("body :focus"));
</script>
</body>
4.内容
- 查找ul所有li中包含2的文本,包含你的文本
匹配包含给定文本的元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul li:contains(2)"));
console.log($("ul li:contains(你)"));
</script>
</body>
- 匹配.menu里面.child元素
匹配含有选择器所匹配的元素的元素
<body>
<ul class="menu">
<li>1</li>
<li class="child">2
<ul>
<li>21</li>
<li>22</li>
<li>你好</li>
<li>第二</li>
</ul>
</li>
<li>3</li>
<li>4</li>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("ul.menu:has(.child)"));
</script>
</body>
- 匹配不包含子元素或者文本的空元素的div
匹配所有不包含子元素或者文本的空元素
<body>
<div></div>
<div>
</div>
<div>
</div>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("div:empty"));
</script>
</body>
- 匹配含有子元素或者文本的元素的div
匹配含有子元素或者文本的元素
<body>
<div></div>
<div>
</div>
<div>
</div>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("div:parent")); //匹配的元素必须有子元素或者 内容
</script>
</body>
5.可见性
- :hidden
匹配所有不可见元素,或者type为hidden的元素
<head lang="en">
<title></title>
<style>
button{
display: none;
}
</style>
</head>
<body>
<button class="btn">按钮</button>
<button class="btn" id="an1">按钮</button>
<button class="btn1" id="an2">按钮</button>
<input type="text"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($(":hidden"));
</script>
</body>
- :visible
匹配所有的可见元素
<head lang="en">
<title></title>
<style>
button{
display: none;
}
</style>
</head>
<body>
<button class="btn">按钮</button>
<button class="btn" id="an1">按钮</button>
<button class="btn1" id="an2">按钮</button>
<input type="text"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($(":visible"));
</script>
</body>
6.属性
- 匹配含有type属性的元素
匹配包含给定属性的元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("input[type]"));
</script>
</body>
- 查找所有type的属性是text的input元素
匹配给定的属性是某个特定值的元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("input[type='text']"));
</script>
</body>
- 查找所有type以t开始的input元素
匹配给定的属性是以某些值开始的元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("input[type^='t']"));
</script>
</body>
- 查找所有type以t结尾的input元素
匹配给定的属性是以某些值结尾的元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("input[type$='t']"));
</script>
</body>
-查找所有type中包含x的input元素
匹配给定的属性是以包含某些值的元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("input[type*='x']"));
</script>
</body>
- 找到所有含有type class id属性的元素
复合属性选择器,需要同时满足多个条件时使用
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("input[type][class][id]"));
</script>
</body>
7. 子元素
- :first-child :last-child
:first-child 匹配第一个子元素
:last-child 匹配最后一个子元素
<body>
<ul id="nav">
<li>1</li>
<p>2</p>
<li>3</li>
<p>4</p>
<li>5</li>
<p>6</p>
<li>7</li>
<p>8</p>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("#nav>li:first-child"));
console.log($("#nav>li:last-child"));
</script>
</body>
- :first-of-type :last-of-type
:first-of-type 匹配ul里面li里的第一个子元素
:last-of-type 匹配ul里面li里的最后一个子元素
<body>
<ul id="nav">
<li>1</li>
<p>2</p>
<li>3</li>
<p>4</p>
<li>5</li>
<p>6</p>
<li>7</li>
<p>8</p>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("#nav>li:first-of-type"));
console.log($("#nav>li:last-of-type"));
</script>
</body>
- :nth-child :nth-last-child
:nth-child(3) 匹配#nav里面li所有元素的第三个元素
:nth-last-child(2) 匹配#nav里面li所有元素的倒数第二个元素
<body>
<ul id="nav">
<li>1</li>
<p>2</p>
<li>3</li>
<p>4</p>
<li>5</li>
<p>6</p>
<li>7</li>
<p>8</p>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("#nav>li:nth-child(3)"));
console.log($("#nav>li:nth-last-child(2)"));
</script>
</body>
- :nth-of-type :nth-last-of-type
:nth-of-type(2) 匹配#nav里面li子集的第二个元素
:nth-last-of-type(2) 匹配#nav里面li子集的倒数第二个元素
<body>
<ul id="nav">
<li>1</li>
<p>2</p>
<li>3</li>
<p>4</p>
<li>5</li>
<p>6</p>
<li>7</li>
<p>8</p>
</ul>
<script src="js/jquery-1.9.1.js"></script>
<script>
console.log($("#nav>li:nth-of-type(2)"));
console.log($("#nav>li:nth-last-of-type(2)"));
</script>
</body>
8.表单
- :input 匹配所有 input, textarea, select 和 button 元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":input"));
</script>
</body>
- :text 匹配所有的单行文本框
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":text"));
</script>
</body>
- :password 匹配所有密码框
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":password"));
</script>
</body>
- :radio 匹配所有单选按钮
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":radio"));
</script>
</body>
- :checkbox 匹配所有复选框
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":checkbox"));
</script>
</body>
- :submit 匹配所有提交按钮
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":submit"));
</script>
</body>
- :image 匹配所有图像域
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":image"));
</script>
</body>
- :reset 匹配所有重置按钮
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":reset"));
</script>
</body>
- :file 匹配所有文件域
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($(":file"));
</script>
</body>
9. 表单对象属性
- :disabled 匹配所有不可用元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($("input:disabled"));
</script>
</body>
- :enabled 匹配所有可用元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($("input:enabled"));
</script>
</body>
- :checked 匹配所有选中的被选中元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($("input[type=radio]:checked"));
</script>
</body>
- :selected 匹配所有选中的option元素
<body>
<input type="text" id="user" class="ipt"/>
<input type="text"/>
<input disabled type="password"/>
<input type="image"/>
<input disabled type="file"/>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="checkbox" checked/>
<input type="checkbox"/>
<input type="radio" checked/>
<input type="radio"/>
<textarea></textarea>
<select>
<option value="">选择</option>
<option value="">宝鸡</option>
<option value="" selected>西安</option>
</select>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
console.log($("select>option:selected"));
</script>
</body>
10. 混淆选择器
对含有#号的ID进行编码
<body>
<span id="#span">特殊字符</span>
<span class="+span">特殊字符</span>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
//$.escapeSelector("#span") 3.0+
console.log($.escapeSelector("#span")); // \#span
console.log($("#"+$.escapeSelector("#span")));
console.log($("."+$.escapeSelector("+span")));
</script>
</body>