一、管理选择器所得到的结果
1、用jQuery选择出来的元素与数组非常类似,可以通过jQuery提供的一系列方法对其进行处理,包括获取长度、查找某个元素、筛选元素、遍历每个元素等。
(1)size()
获取选择器中元素的个数,类似数组中的length属性
PS:jQuery1.8以后没有size(),用length代替
(2)index(element)
查找元素在集合中的位置
(3)add()
给集合添加元素
(4)not()
去除元素集合中的某个元素
(5)filter()
筛选元素集合中的元素
(6)find()
通过查询获取新的元素集合
(7)each()
对选择器中的元素进行遍历
2、jQuery的一个强大的地方就是可以使用链式操作,可以大大缩短代码的长度,其中有两个方法用的比较多,比如:end()—回到操作对象的上一个对象,andSelf()—将前面对象进行组合后共同处理。
PS:andSelf()方法在新版本中用andBack()方法替换
3、管理选择器结果size().html
- <html>
- <head>
- <title>size()方法title>
- <style type="text/css">
- html{
- cursor:help;
- font-size:12px;
- font-family:Arial, Helvetica, sans-serif;
- }
- div{
- border:1px solid #003a75;
- background-color:#FFFF00;
- margin:5px;
- padding:20px;
- text-align:center;
- height:20px;
- width:20px;
- float:left
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- //用DOM注册一个点击事件
- document.onclick=function() {
- //获取div元素数量
- var i=$("div").length+1;
- //创建div
- var div=document.createElement("div");
- //把i放入div元素内
- div.innerHTML=i;
- //把div元素添加到body元素内,作为它的一个子元素
- $("body")[0].appendChild(div);
- //修改span值
- $("span")[0].innerHTML=i;
- }
- script>
- head>
-
- <body>
- <p>页面中一共有<span>0span>个div块。点击鼠标添加div:p>
- body>
- html>
4、管理选择器结果index().html
- <html>
- <head>
- <title>index()方法title>
- <style type="text/css">
- html{
- cursor:help;
- font-size:12px;
- font-family:Arial, Helvetica, sans-serif;
- }
- div{
- border:1px solid #003a75;
- background-color:#FFFF00;
- margin:5px;
- padding:20px;
- text-align:center;
- height:20px;
- width:20px;
- float:left
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- $(function(){
- //给所有div注册点击事件
- $("div").click(function(){
- //当前点击的div在这个元素集合里的下标
- var index=$("div").index(this);
- //设置span标签内的值
- $("span").html(index.toString());
- });
- });
- script>
- head>
-
- <body>
- <div>0div><div>1div><div>2div><div>3div><div>4div><div>5div>
- 点击的div块序号为:<span>span>
- body>
- html>
5、管理选择器结果filter().html
- <html>
- <head>
- <title>filter()方法title>
- <style type="text/css">
- div{
- margin:5px;
- padding:5px;
- text-align:center;
- height:40px;
- width:40px;
- float:left
- }
- .myClass1{
- background:#fcff9f;
- }
- .myClass2{
- border:2px solid #000000;
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- $(function(){
- /*
- //给所有的div元素添加类选择器,样式
- $("div").addClass("myClass1");
- //过滤div元素集合里的元素,class属性包含middle
- var divs=$("div").filter("[class*=middle]");
- //再给过滤出的div元素添加类选择器,样式
- divs.addClass("myClass2");
- */
-
- //链式操作
- //$("div").addClass("myClass1").filter("[class*=middle]").addClass("myClass2");
-
- //filter里面函数作为参数,让用户自定义筛选函数,对于返回值为true的元素保留,否则就去除
- $("div").addClass("myClass1").filter(function(index){
- //index是元素集合里的下标
- return index==1||index==3; //保留下标为1和3的那个
- }).addClass("myClass2");
-
- });
- script>
- head>
-
- <body>
- <div>div>
- <div class="middle">div>
- <div class="middle">div>
- <div class="middle">div>
- <div class="middle">div>
- <div>div>
- body>
- html>
6、管理选择器结果find()_add()_not().html
- <html>
- <head>
- <title>find()_add()_not()方法title>
- <style type="text/css">
- .myClass{
- background:#ffde00;
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- $(function(){
- //找到所有p元素,从p元素内部找span元素
- //添加p元素里的子元素b到元素集合
- //给元素集合里的元素添加类选择器myClass,共2个
- $("p").find("span").add("p>b").addClass("myClass");
-
- //not函数去除,和add相反
- //.not("p>b")
-
- });
- script>
- head>
-
- <body>
- <p><span>Hellospan>, how <b>areb> you?p>
- body>
- html>
7、管理选择器结果each().html
- <html>
- <head>
- <title>each()方法title>
- <style type="text/css">
- img{
- border:1px solid #003863;
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- $(function(){
- //查找所有img元素,遍历集合里的每一个元素,每遍历一个调用一次函数
- $("img").each(function(index){
- //this是遍历的当前对象,是一个dom对象
- //为img元素添加title属性
- this.title="这是第"+index+"幅图片,id是"+this.id;
- });
-
- });
- script>
- head>
-
- <body>
- <img src="01.jpg" id="img01" />
- <img src="02.jpg" id="img02" />
- <img src="03.jpg" id="img03" />
- <img src="04.jpg" id="img04" />
- <img src="05.jpg" id="img05" />
- body>
- html>
8、管理选择器结果end()_andSelf().html
- <html>
- <head>
- <title>end()_andSelf()方法title>
- <style type="text/css">
- .myBackground{
- background:#ffde00;
- }
- .myBorder{
- border:2px solid #0000FF;
- }
- p{
- margin:8px;
- padding:4px;
- font-size:12px;
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- $(function(){
- //给p元素添加背景,给div元素添加边框
- //$("div").find("p").addClass("myBackground").end().addClass("myBorder");
- //给p元素添加背景,给div和p元素添加边框
- //jQuery3.x用addBack()替换andSelf()
- $("div").find("p").addClass("myBackground").addBack().addClass("myBorder");
- });
- script>
- head>
-
- <body>
- <div>
- <p>第一段p>
- <p>第二段p>
- div>
- body>
- html>
二、jQuery对元素节点的操作
1、通过jQuery来动态对节点进行操作是很容易的,对节点的操作主要分为:查询节点、创建节点、插入节点、删除节点、复制节点、替换节点、包裹节点、对节点的属性操作、对节点的样式操作、设置和获取节点的HTML、文本和值、遍历元素节点、对节点的CSS-DOM操作。
三、创建元素节点
可以通过jQuery的工厂函数$()来完成对元素节点的创建
例子:
- var $node_1=$(""); //创建一个空的元素节点
- var $node_2=$("
hello
"); //创建一个带文本的元素节点 - var $node_3=$("
">world
"); //创建一个带属性的元素节点
四、插入元素节点
1、对新建元素节点的插入操作并非只有一种,以下是几种插入节点的方法
(1)append()
向每个匹配的元素内部追加内容(内部添加,最后一个子元素)
(2)appendTo()
将所有匹配的元素追加到指定的元素中(效果同append)
(3)prepend()
向每个匹配的元素内部前置内容(内部添加,第一个子元素)
(4)prependTo()
将所有匹配的元素前置到指定的元素中(效果同prepend)
(5)after()
在每个匹配的元素之后插入内容(插入同辈元素)
(6)insertAfter()
将所有匹配的元素插入到指定元素的后面(效果同after)
(7)before()
在每个匹配的元素之前插入内容(插入上一个兄弟节点)
(8)insertBefore()
将所有匹配的元素插入到指定元素的前面(效果同before)
2、元素创建和插入方法.html
- <html>
- <head>
- <title>元素创建和插入方法title>
- <style type="text/css">
- html{
- cursor:help;
- font-size:12px;
- font-family:Arial, Helvetica, sans-serif;
- }
- div{
- border:1px solid #003a75;
- background-color:#FFFF00;
- margin:5px;
- padding:20px;
- text-align:center;
- height:20px;
- width:20px;
- float:left
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- /*
- //用DOM注册一个点击事件
- document.onclick=function() {
- //获取div元素数量
- var i=$("div").length+1;
- //创建div
- var div=document.createElement("div");
- //把i放入div元素内
- div.innerHTML=i;
- //把div元素添加到body元素内,作为它的一个子元素
- $("body")[0].appendChild(div);
- //修改span值
- $("span")[0].innerHTML=i;
- }
- */
-
- //用jQuery来实现,对比上面用DOM方式,jQuery方式比较简单
- $(function(){
- //查询当前文档,绑定click事件
- $(document).click(function(){
- var i=$("div").length+1;
- //创建div标签
- var div=$(""+i+"");
- //查找body元素,追加一个子元素
- //append方法
- //$("body").append(div);
- //appendTo方法
- //div.appendTo($("body"));
- //prepend方法
- //$("body").prepend(div);
- //prepend方法
- //div.prependTo($("body"));
- //after方法,在body元素之后,添加div元素
- //$("body").after(div);
- //insertAfter方法
- //div.insertAfter($("body"));
- //before方法
- //$("body").before(div);
- //insertBefore方法
- div.insertBefore($("body"));
- //span内加1
- $("span").html(i);
-
- });
- });
- script>
- head>
-
- <body>
- <p>页面中一共有<span>0span>个div块。点击鼠标添加div:p>
- body>
- html>
五、删除节点元素
1、删除节点
(1)remove方法
例子:
- var $remove_li=$("ul li:eq(1)").remove(); //删除ul元素中的第2个li元素,返回被删除的li元素对象
- $("ul li").remove("li[title!='桔子']"); //通过传递参数来进行选择性的删除
(2)detach()方法
例子:
var $remove_li=$("ul li:eq(1)").detach(); //和remove类似删除指定的元素,与remove不同的是,所有绑定的事件、附加的数据都会保留下来
(3)empty()方法
例子:
$("ul li:eq(1)").empty(); //empty方法并不是删除元素节点,而是清空节点,它能清空元素中的所有后代节点
2、删除元素节点.html
- <html>
- <head>
- <title>remove()、detach()、empty()方法title>
- <style type="text/css">
- p{
- font-size:14px;
- margin:0px;
- padding:5px;
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- /*
- $(function(){
- $("p").click(function(){
- alert("hello p");
- });
- $("input").click(function(){
- //删除p元素,返回被删除的对象
- var $removed=$("p").remove();
- //将p元素插入到h2标签之后
- $("h2").after($removed);
- //删除后p的点击事件没了
- });
- });
- */
-
- /*
- $(function(){
- $("p").click(function(){
- alert("hello p");
- });
- $("input").click(function(){
- //删除p元素,返回被删除的对象
- var $removed=$("p").detach();
- //将p元素插入到h2标签之后
- $("h2").after($removed);
- //删除后p的点击事件还在
- });
- });
- */
-
- $(function(){
- $("p").click(function(){
- alert("hello p");
- });
- $("input").click(function(){
- //没有删除p元素,而是清空了p元素的内容
- $("p").empty();
- });
- });
-
- script>
- head>
-
- <body>
- <p>从前有一只大恐龙...p>
- <input type="button" value="点击我" />
- <h2>在树林里面跑啊跑...h2>
- body>
- html>
六、复制节点
clone()方法
例子:
- $("li:eq(1)").clone.appendTo("ul"); //复制第二个li元素插入到ul中
- $("li:eq(1)").clone(true).appendTo("ul"); //传递了一个参数为true,代表复制元素的同时复制元素中所绑定的事件
七、替换节点
1、replaceWith()方法和replaceAll()方法
例子:
- $("li:eq(1)").replaceWith("
- 草莓
"); //把第二个li元素替换掉 - $("
- 草莓
").replaceAll("li:eq(1)"); //把第二个li元素替换掉。和replaceWith一样,无非就是语法颠倒
2、复制和替换元素.html
- <html>
- <head>
- <title>复制和替换元素title>
- <style type="text/css">
-
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- /*
- $(function(){
- //查找第一张图片,注册点击事件
- $("img:eq(0)").click(function(){
- //当前对象,this是dom对象,通过$封装成jQuery对象
- //复制并添加到body里
- //但是新插入的图片并没有点击事件
- $(this).clone().appendTo($("body"));
- //可以继承点击事件
- //$(this).clone(true).appendTo($("body"));
- });
- });
- */
-
- $(function(){
- $("img:eq(0)").click(function(){
- //把第二张图片替换成超链接
- //$("img:eq(1)").replaceWith("我是超链接");
- });
- });
- script>
- head>
-
- <body>
- <img src="09.jpg" /><img src="10.jpg" />
- body>
- html>
八、包裹节点
1、wrap()方法、wrapAll()方法和wrapInner()方法
例子:
- $("li").wrap(""); //查找所有li元素,用i标签把li标签包裹起来
- $("li").wrapAll(""); //用i标签把多个li标签整体包裹起来,要是被包裹的多个元素之间有其他元素,其他元素会被放到包裹元素之后
- $("li").wrapInner(""); //把匹配到元素内部内容用i标签包裹
2、包裹节点.html
- <html>
- <head>
- <title>包裹节点title>
- <style type="text/css">
- p{
- font-size:14px;
- margin:0px;
- padding:5px;
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- $(function(){
- //给第一个按钮注册事件
- $("input:eq(0)").click(function(){
- $("p").wrap("");
- });
- //给第二个按钮注册事件
- $("input:eq(1)").click(function(){
- $("p").wrapAll("");
- });
- //给第三个按钮注册事件
- $("input:eq(2)").click(function(){
- $("p").wrapInner("");
- });
- });
-
- script>
- head>
-
- <body>
- <p>我是段落1p>
- <h5>我是5号标题h5>
- <p>我是段落2p>
- <input type="button" value="wrap" /><br/>
- <input type="button" value="wrapAll" /><br/>
- <input type="button" value="wrapInner" /><br/>
-
- body>
- html>
九、节点属性操作
1、设置获取属性方法:attr(),删除属性的方法:removeAttr()
例子:
- alert($("li:eq(1)").attr("title")); //获取第二个li元素的title属性
- $("ul").attr({"title":"列表","id":"myul"}); //一次性设置多个属性
- $("li:eq(1)").removeAttr("title"); //删除第二个li内的title属性
2、节点属性操作.html
- <html>
- <head>
- <title>节点属性操作title>
- <style type="text/css">
-
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- $(function(){
- $("input:eq(0)").click(function(){
- alert($("img").attr("id"));
-
- });
- $("input:eq(1)").click(function(){
- $("img").attr({"title":"下雪啦","name":"chenhao"});
-
- });
- $("input:eq(2)").click(function(){
- $("img").removeAttr("id");
-
- });
- });
-
- script>
- head>
-
- <body>
- <img src="09.jpg" id="myimg" /><br/>
- <input type="button" value="获取id属性" /><br/>
- <input type="button" value="设置属性" /><br/>
- <input type="button" value="删除属性" /><br/>
-
- body>
- html>
十、节点样式操作
1、获取和设置样式可以用前面讲的设置获取属性(attr())方法来实现
例子:
$("li:eq(2)").attr("class","myclass"); //给第三个li元素设置class属性为myclass
2、追加样式使用addClass()方法
例子:
$("li:eq(2)").addClass("another"); //给第三个li元素追加another类选择器,和前面设置的样式不同的功能会叠加,相同的功能会覆盖
3、移除样式使用removeClass()方法
例子:
- $("li:eq(2)").removeClass("myClass"); //移除一个class选择器
- $("li:eq(2)").removeClass("myClass another"); //以空格方式隔开来,同时移除多个class选择器
4、切换样式使用toggleClass()方法
- $("li:eq(2)").toggleClass("another"); //重复切换another选择器,已经使用的时候移除,没有使用的时候设置
- //假设使用了类选择器就移除,假设没使用就添加
5、判断是否含有某个样式使用hasClass()方法
- $("li:eq(2)").hasClass("another"); //有返回true,没有返回false
- //此方法和$("li:eq(2)").is("another");等同
6、节点样式操作.html
- <html>
- <head>
- <title>节点样式操作title>
- <style type="text/css">
- .myClass1{
- border:1px solid #750037;
- width:120px;
- height:80px;
- background-color:#ffcdfc;
- }
- style>
-
- <script type="text/javascript" src="script/jquery-3.6.0.js">script>
- <script type="text/javascript">
- //点击div元素,判断有没有用到myClass1类选择器
- //假设用到了就移除
- //假设没用到就添加上
- $(function(){
- $("div").click(function(){
- //方式一
- /*
- if ($(this).hasClass("myClass1")) {
- $(this).removeClass("myClass1");
- } else {
- $(this).addClass("myClass1");
- }
- */
- //方式二
- $(this).toggleClass("myClass1");
- });
- });
-
- script>
- head>
-
- <body>
- <div>我是divdiv>
- body>
- html>