1.1 jQuery概念
jQuery是一个兼容多浏览器的、轻量级的JavaScript库
jQuery,顾名思义,也就是JavaScript和查询(Query),如今,jQuery已经成为最流行的JavaScript库
其宗旨是
——WRITE LESS,DO MORE (写的少,做的多)
1.2 jQuery作用
HTML元素选取(选择器)HTML元素操作CSS操作HTML事件处理JS动画效果链式调用读写合一浏览器兼容易扩展插件ajax封装等。。。jQuery的链式操作:
.$(’#div1’).css(‘color’,‘red’).css(‘font-size’, ‘50px’);
在jQuery代码中一直在使用**$(function(){})**;这段代码进行首尾包裹,那么为什么必须要包裹这段代码呢?原因是我们jQuery库文件是在body元素之前加载的,我们必须等待所
有的DOM元素加载后,延迟支持DOM操作,否则jQuery选择器就无法获取到相应的节点
元素。在延迟等待加载,JavaScript提供了一个事件为load。
window.onload=function(){ }; //JavaScript 等待加载 $(document).ready(function(){ }); //jQuery等待加载[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0PQkcSct-1602117559073)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200821111732715.png)]
际应用中,很少直接去使用 window.onload,因为需要等待图片之类的大型元素加载完毕后才能执行 js 代码。所以,在网速较慢的情况下,页面已经全面展
开,图片还在缓慢加载,这时页面上任何的 js 交互功能全部处在假死状态。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBvEolgj-1602117559075)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200821112431181.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w3569Qd8-1602117559076)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200821112640388.png)]
1.原生的JS如果编写了多个入口函数,后面编写的会覆盖前面编写的 2.jQuery中编写多个入口函数,后面的不会覆盖前面的
window.onload = function (ev) { alert("hello lnj1"); } window.onload = function (ev) { alert("hello lnj2"); } $(document).ready(function () { alert("hello lnj1"); }); $(document).ready(function () { alert("hello lnj2"); });jQuery的each方法是可以遍历伪数组的
$.each(obj, function (index, value) { console.log(index, value); });
<script> var arr = [1, 3, 5, 7, 9]; var obj = {0:1, 1:3, 2:5, 3:7, 4:9, length:5}; /* 第一个参数: 遍历到的元素 第二个参数: 当前遍历到的索引 注意点: 原生的forEach方法只能遍历数组, 不能遍历伪数组 */ // arr.forEach(function (value, index) { // console.log(index, value); // }); // obj.forEach(function (value, index) { // console.log(index, value); // }); // 1.利用jQuery的each静态方法遍历数组 /* 第一个参数: 当前遍历到的索引 第二个参数: 遍历到的元素 注意点: jQuery的each方法是可以遍历伪数组的 */ // $.each(arr, function (index, value) { // console.log(index, value); // }); $.each(obj, function (index, value) { console.log(index, value); }); </script>jQuery中的each静态方法和map静态方法的区别: each静态方法默认的返回值就是, 遍历谁就返回谁 map静态方法默认的返回值是一个空数组
each静态方法不支持在回调函数中对遍历的数组进行处理 map静态方法可以在回调函数中通过return对遍历的数组进行处理, 然后生成一个新的数组返回
<script> var arr = [1, 3, 5, 7, 9]; var obj = {0:1, 1:3, 2:5, 3:7, 4:9, length:5}; // 1.利用原生JS的map方法遍历 /* 第一个参数: 当前遍历到的元素 第二个参数: 当前遍历到的索引 第三个参数: 当前被遍历的数组 注意点: 和原生的forEach一样,不能遍历的伪数组 */ // arr.map(function (value, index, array) { // console.log(index, value, array); // }); // obj.map(function (value, index, array) { // console.log(index, value, array); // }); /* 第一个参数: 要遍历的数组 第二个参数: 每遍历一个元素之后执行的回调函数 回调函数的参数: 第一个参数: 遍历到的元素 第二个参数: 遍历到的索引 注意点: 和jQuery中的each静态方法一样, map静态方法也可以遍历伪数组 */ // $.map(arr, function (value, index) { // console.log(index, value); // }); var res = $.map(obj, function (value, index) { console.log(index, value); return value + index; }); var res2 = $.each(obj, function (index, value) { console.log(index, value); return value + index; }); /* jQuery中的each静态方法和map静态方法的区别: each静态方法默认的返回值就是, 遍历谁就返回谁 map静态方法默认的返回值是一个空数组 each静态方法不支持在回调函数中对遍历的数组进行处理 map静态方法可以在回调函数中通过return对遍历的数组进行处理, 然后生成一个新的数组返回 */ console.log(res); console.log(res2); </script>console.log( ( " i n p u t " ) . p r o p ( " c h e c k e d " ) ) ; / / t r u e / f a l s e c o n s o l e . l o g ( ("input").prop("checked")); // true / false console.log( ("input").prop("checked"));//true/falseconsole.log((“input”).attr(“checked”)); // checked / undefined
官方推荐在操作属性节点时,具有 true 和 false 两个属性的属性节点,如 checked, selected 或者 di
sabled 使用prop(),其他的使用 attr()
<script> $(function () { /* 1.prop方法 特点和attr方法一致 2.removeProp方法 特点和removeAttr方法一致 */ /* $("span").eq(0).prop("demo", "it666"); $("span").eq(1).prop("demo", "lnj"); console.log($("span").prop("demo")); $("span").removeProp("demo"); */ /* 注意点: prop方法不仅能够操作属性, 他还能操作属性节点 官方推荐在操作属性节点时,具有 true 和 false 两个属性的属性节点,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr() */ // console.log($("span").prop("class")); // $("span").prop("class", "box"); console.log($("input").prop("checked")); // true / false console.log($("input").attr("checked")); // checked / undefined }); </script> <body> <span class="span1" name="it666"></span> <span class="span2" name="lnj"></span> <input type="checkbox"> </body>1.addClass(class|fn) 作用: 添加一个类 如果要添加多个, 多个类名之间用空格隔开即可
2.removeClass([class|fn]) 作用: 删除一个类 如果想删除多个, 多个类名之间用空格隔开即可
3.toggleClass(class|fn[,sw]) 作用: 切换类 有就删除, 没有就添加
<style> *{ margin: 0; padding: 0; } .class1{ width: 100px; height: 100px; background: red; } .class2{ border: 10px solid #000; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { /* 1.addClass(class|fn) 作用: 添加一个类 如果要添加多个, 多个类名之间用空格隔开即可 2.removeClass([class|fn]) 作用: 删除一个类 如果想删除多个, 多个类名之间用空格隔开即可 3.toggleClass(class|fn[,sw]) 作用: 切换类 有就删除, 没有就添加 */ var btns = document.getElementsByTagName("button"); btns[0].onclick = function () { // $("div").addClass("class1"); $("div").addClass("class1 class2"); } btns[1].onclick = function () { // $("div").removeClass("class2"); $("div").removeClass("class2 class1"); } btns[2].onclick = function () { $("div").toggleClass("class2 class1"); } }); </script> </head> <body> <button>添加类</button> <button>删除类</button> <button>切换类</button> <div></div> </body>// position()
// 作用: 获取元素距离定位元素的偏移位
// offset([coordinates]) // 作用: 获取元素距离窗口的偏移位
<style> *{ margin: 0; padding: 0; } .father{ width: 200px; height: 200px; background: red; border: 50px solid #000; margin-left: 50px; position: relative; } .son{ width: 100px; height: 100px; background: blue; position: absolute; left: 50px; top: 50px; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 var btns = document.getElementsByTagName("button"); // 监听获取 btns[0].onclick = function () { // 获取元素的宽度 // console.log($(".father").width()); // offset([coordinates]) // 作用: 获取元素距离窗口的偏移位 // console.log($(".son").offset().left); // position() // 作用: 获取元素距离定位元素的偏移位 console.log($(".son").position().left); } // 监听设置 btns[1].onclick = function () { // 设置元素的宽度 // $(".father").width("500px") // $(".son").offset({ // left: 10 // }); // 注意点: position方法只能获取不能设置 // $(".son").position({ // left: 10 // }); $(".son").css({ left: "10px" }); } }); </script> </head> <body> <div class="father"> <div class="son"></div> </div> <button>获取</button> <button>设置</button> </body>阻止事件冒泡: return false;或event.stopPropagation();
阻止默认行为:return false;或 event.preventDefault();
<style> *{ margin: 0; padding: 0; } .father{ width: 200px; height: 200px; background: red; } .son{ width: 100px; height: 100px; background: blue; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 /* 1.什么是事件冒泡? 2.如何阻止事件冒泡 3.什么是默认行为? 4.如何阻止默认行为 */ /* $(".son").click(function (event) { alert("son"); // return false; event.stopPropagation(); }); $(".father").click(function () { alert("father"); }); */ $("a").click(function (event) { alert("弹出注册框"); // return false; event.preventDefault(); }); }); </script> </head> <body> <div class="father"> <div class="son"></div> </div> <a href="http://www.baidu.com">注册</a> <form action="http://www.taobao.com"> <input type="text"> <input type="submit"> </form> </body>trigger: 如果利用trigger自动触发事件,会触发事件冒泡 triggerHandler: 如果利用triggerHandler自动触发事件, 不会触发事件冒泡
注意:a标签例外
<style> *{ margin: 0; padding: 0; } .father{ width: 200px; height: 200px; background: red; } .son{ width: 100px; height: 100px; background: blue; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 $(".son").click(function (event) { alert("son"); }); $(".father").click(function () { alert("father"); }); // $(".father").trigger("click"); // $(".father").triggerHandler("click"); /* trigger: 如果利用trigger自动触发事件,会触发事件冒泡 triggerHandler: 如果利用triggerHandler自动触发事件, 不会触发事件冒泡 */ // $(".son").trigger("click"); // $(".son").triggerHandler("click"); $("input[type='submit']").click(function () { alert("submit"); }); /* trigger: 如果利用trigger自动触发事件,会触发默认行为 triggerHandler: 如果利用triggerHandler自动触发事件, 不会触发默认行为 */ // $("input[type='submit']").trigger("click"); // $("input[type='submit']").triggerHandler("click"); $("span").click(function () { alert("a"); }); // $("a").triggerHandler("click"); $("span").trigger("click"); }); </script> </head> <body> <div class="father"> <div class="son"></div> </div> <a href="http://www.baidu.com"><span>注册</span></a> <form action="http://www.taobao.com"> <input type="text"> <input type="submit"> </form> </body>想要自定义事件, 必须满足两个条件 1.事件必须是通过on绑定的 2.事件必须通过trigger来触发 */ $(".son").on(“myClick”, function () { alert(“son”); }); $(".son").triggerHandler(“myClick”);
<style> *{ margin: 0; padding: 0; } .father{ width: 200px; height: 200px; background: red; } .son{ width: 100px; height: 100px; background: blue; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 // $(".son").myClick(function (event) { // alert("son"); // }); /* 想要自定义事件, 必须满足两个条件 1.事件必须是通过on绑定的 2.事件必须通过trigger来触发 */ $(".son").on("myClick", function () { alert("son"); }); $(".son").triggerHandler("myClick"); }); </script> </head> <body> <div class="father"> <div class="son"></div> </div> <a href="http://www.baidu.com"><span>注册</span></a> <form action="http://www.taobao.com"> <input type="text"> <input type="submit"> </form> </body>面试题:
<style> *{ margin: 0; padding: 0; } .father{ width: 200px; height: 200px; background: red; } .son{ width: 100px; height: 100px; background: blue; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { $(".father").on("click.ls", function () { alert("father click1"); }); $(".father").on("click", function () { alert("father click2"); }); $(".son").on("click.ls", function () { alert("son click1"); }); /* 利用trigger触发子元素带命名空间的事件, 那么父元素带相同命名空间的事件也会被触发. 而父元素没有命名空间的事件不会被触发 利用trigger触发子元素不带命名空间的事件,那么子元素所有相同类型的事件和父元素所有相同类型的事件都会被触发 */ // $(".son").trigger("click.ls"); $(".son").trigger("click"); }); </script> </head> <body> <div class="father"> <div class="son"></div> </div> <a href="http://www.baidu.com"><span>注册</span></a> <form action="http://www.taobao.com"> <input type="text"> <input type="submit"> </form> </body>练习:
<title>32-jQuery事件委托练习</title> <style> *{ margin: 0; padding: 0; } html,body{ width: 100%; height: 100%; } .mask{ width: 100%; height: 100%; background: rgba(0,0,0,0.5); position: fixed; top: 0; left: 0; } .login{ width: 522px; height: 290px; margin: 100px auto; position: relative; } .login>span{ width: 50px; height: 50px; /*background: red;*/ position: absolute; top: 0; right: 0; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 $("a").click(function () { var $mask = $("<div class=\"mask\">\n" + " <div class=\"login\">\n" + " <img src=\"images/login.png\" alt=\"\">\n" + " <span></span>\n" + " </div>\n" + "</div>"); // 添加蒙版 $("body").append($mask); $("body").delegate(".login>span", "click", function () { // 移除蒙版 $mask.remove(); }); return false; }); }); </script> </head> <body> <!--<div class="mask">--> <!--<div class="login">--> <!--<images src="images/login.png" alt="">--> <!--<span></span>--> <!--</div>--> <!--</div>--> <a href="http://www.baidu.com">点击登录</a> <div>我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我</div> </body>show();
hide();
toggle();
<style> *{ margin: 0; padding: 0; } div{ width: 200px; height: 200px; background: red; display: none; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 $("button").eq(0).click(function () { // $("div").css("display", "block"); // 注意: 这里的时间是毫秒 $("div").show(1000, function () { // 作用: 动画执行完毕之后调用 alert("显示动画执行完毕"); }); }); $("button").eq(1).click(function () { // $("div").css("display", "none"); $("div").hide(1000, function () { alert("隐藏动画执行完毕"); }); }); $("button").eq(2).click(function () { $("div").toggle(1000, function () { alert("切换动画执行完毕"); }); }); }); </script> </head> <body> <button>显示</button> <button>隐藏</button> <button>切换</button> <div></div> </body>slideDown()
slideUp()
slideToggle()
<style> *{ margin: 0; padding: 0; } div{ width: 100px; height: 300px; background: red; display: none; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 $("button").eq(0).click(function () { $("div").slideDown(1000, function () { alert("展开完毕"); }); }); $("button").eq(1).click(function () { $("div").slideUp(1000, function () { alert("收起完毕"); }); }); $("button").eq(2).click(function () { $("div").slideToggle(1000, function () { alert("收起完毕"); }); }); }); </script> </head> <body> <button>展开</button> <button>收起</button> <button>切换</button> <div></div> </body>[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9beWdI5-1602117559079)(C:\Users\Administrator\Desktop\javaweb笔记\jQuery笔记图片\折叠菜单.png)]
<style> *{ margin: 0; padding: 0; } .nav{ list-style: none; width: 300px; margin: 100px auto; /*border: 1px solid #000;*/ } .nav>li{ border: 1px solid #000; line-height: 35px; border-bottom: none; text-indent: 2em; position: relative; } .nav>li:last-child{ border-bottom: 1px solid #000; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px; } .nav>li:first-child{ border-top-right-radius: 10px; border-top-left-radius: 10px; } .nav>li>span{ background: url("images/arrow_right.png") no-repeat center center; display: inline-block; width: 32px; height: 32px; position: absolute; right: 10px; top: 5px; } .sub{ display: none; } .sub>li{ list-style: none; background: mediumpurple; border-bottom: 1px solid white; } .sub>li:hover{ background: red; } .nav>.current>span{ transform: rotate(90deg); } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 1.监听一级菜单的点击事件 $(".nav>li").click(function () { // 1.1拿到二级菜单 var $sub = $(this).children(".sub"); // 1.2让二级菜单展开 $sub.slideDown(1000); // 1.3拿到所有非当前的二级菜单 var otherSub = $(this).siblings().children(".sub"); // 1.4让所有非当前的二级菜单收起 otherSub.slideUp(1000); // 1.5让被点击的一级菜单箭头旋转 $(this).addClass("current"); // 1.6让所有非被点击的一级菜单箭头还原 $(this).siblings().removeClass("current"); }); }); </script> </head> <body> <ul class="nav"> <li>一级菜单<span></span> <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单<span></span> <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单<span></span> <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单<span></span> <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单<span></span> <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单<span></span> <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单<span></span> <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单<span></span> <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> </ul> </body>[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XjvzvddH-1602117559081)(C:\Users\Administrator\Desktop\javaweb笔记\jQuery笔记图片\下拉菜单stop()]方法.png)
<style> *{ margin: 0; padding: 0; } .nav{ list-style: none; width: 300px; height: 50px; background: red; margin: 100px auto; } .nav>li{ width: 100px; height: 50px; line-height: 50px; text-align: center; float: left; } .sub{ list-style: none; background: mediumpurple; display: none; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { /* 在jQuery中如果需要执行动画, 建议在执行动画之前先调用stop方法,然后再执行动画 */ // 1.监听一级菜单的移入事件 $(".nav>li").mouseenter(function () { // 1.1拿到二级菜单 var $sub = $(this).children(".sub"); // 停止当前正在运行的动画: $sub.stop(); // 1.2让二级菜单展开 $sub.slideDown(1000); }); // 2.监听一级菜单的移出事件 $(".nav>li").mouseleave(function () { // 1.1拿到二级菜单 var $sub = $(this).children(".sub"); // 停止当前正在运行的动画: $sub.stop(); // 1.2让二级菜单收起 $sub.slideUp(1000); }); }); </script> </head> <body> <ul class="nav"> <li>一级菜单 <ul class="sub"> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单</li> <li>一级菜单</li> </ul> </body>第一个参数: 接收一个对象, 可以在对象中修改属性 第二个参数: 指定动画时长 第三个参数: 指定动画节奏, 默认就是swing 第四个参数: 动画执行完毕之后的回调函数
$(".two").animate({ marginLeft: 500 }, 5000, “linear”, function () { // alert(“自定义动画执行完毕”); });
<style> *{ margin: 0; padding: 0; } div{ width: 100px; height: 100px; margin-top: 10px; background: red; } .two{ background: blue; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 $("button").eq(0).click(function () { /* $(".one").animate({ width: 500 }, 1000, function () { alert("自定义动画执行完毕"); }); */ $(".one").animate({ marginLeft: 500 }, 5000, function () { // alert("自定义动画执行完毕"); }); /* 第一个参数: 接收一个对象, 可以在对象中修改属性 第二个参数: 指定动画时长 第三个参数: 指定动画节奏, 默认就是swing 第四个参数: 动画执行完毕之后的回调函数 */ $(".two").animate({ marginLeft: 500 }, 5000, "linear", function () { // alert("自定义动画执行完毕"); }); }) $("button").eq(1).click(function () { $(".one").animate({ width: "+=100" }, 1000, function () { alert("自定义动画执行完毕"); }); }); $("button").eq(2).click(function () { $(".one").animate({ // width: "hide" width: "toggle" }, 1000, function () { alert("自定义动画执行完毕"); }); }) }); </script> </head> <body> <button>操作属性</button> <button>累加属性</button> <button>关键字</button> <div class="one"></div> <div class="two"></div> </body> // 立即停止当前动画, 继续执行后续的动画 // $(“div”).stop(); // $(“div”).stop(false); // $(“div”).stop(false, false);
// 立即停止当前和后续所有的动画 // $(“div”).stop(true); // $(“div”).stop(true, false);
// 立即完成当前的, 继续执行后续动画 // $(“div”).stop(false, true);
// 立即完成当前的, 并且停止后续所有的 $(“div”).stop(true, true);
<style> *{ margin: 0; padding: 0; } .one{ width: 100px; height: 100px; background: red; } .two{ width: 500px; height: 10px; background: blue; } </style> <script src="js/jquery-1.12.4.js"></script> <script> $(function () { // 编写jQuery相关代码 $("button").eq(0).click(function () { /* 在jQuery的{}中可以同时修改多个属性, 多个属性的动画也会同时执行 */ /* $(".one").animate({ width: 500 // height: 500 }, 1000); $(".one").animate({ height: 500 }, 1000); */ /* delay方法的作用就是用于告诉系统延迟时长 */ /* $(".one").animate({ width: 500 // height: 500 }, 1000).delay(2000).animate({ height: 500 }, 1000); */ $(".one").animate({ width: 500 }, 1000); $(".one").animate({ height: 500 }, 1000); $(".one").animate({ width: 100 }, 1000); $(".one").animate({ height: 100 }, 1000); }); $("button").eq(1).click(function () { // 立即停止当前动画, 继续执行后续的动画 // $("div").stop(); // $("div").stop(false); // $("div").stop(false, false); // 立即停止当前和后续所有的动画 // $("div").stop(true); // $("div").stop(true, false); // 立即完成当前的, 继续执行后续动画 // $("div").stop(false, true); // 立即完成当前的, 并且停止后续所有的 $("div").stop(true, true); }); }); </script> </head> <body> <button>开始动画</button> <button>停止动画</button> <div class="one" style="display: none"></div> <div class="two"></div> </body>替换 replaceWith(content|fn) replaceAll(selector) 替换所有匹配的元素为指定的元素
<script> $(function () { /* 替换 replaceWith(content|fn) replaceAll(selector) 替换所有匹配的元素为指定的元素 */ $("button").click(function () { // 1.新建一个元素 var $h6 = $("<h6>我是标题6</h6>"); // 2.替换元素 // $("h1").replaceWith($h6); $h6.replaceAll("h1"); }); }); </script> </head> <body> <button>替换节点</button> <h1>我是标题1</h1> <h1>我是标题1</h1> <p>我是段落</p> </body>如果传入false就是浅复制, 如果传入true就是深复制 浅复制只会复制元素, 不会复制元素的事件 深复制会复制元素, 而且还会复制元素的事件
<script> $(function () { // clone([Even[,deepEven]]) /* 如果传入false就是浅复制, 如果传入true就是深复制 浅复制只会复制元素, 不会复制元素的事件 深复制会复制元素, 而且还会复制元素的事件 */ $("button").eq(0).click(function () { // 1.浅复制一个元素 var $li = $("li:first").clone(false); // 2.将复制的元素添加到ul中 $("ul").append($li); }); $("button").eq(1).click(function () { // 1.深复制一个元素 var $li = $("li:first").clone(true); // 2.将复制的元素添加到ul中 $("ul").append($li); }); $("li").click(function () { alert($(this).html()); }); }); </script> </head> <body> <button>浅复制节点</button> <button>深复制节点</button> <ul> <li>我是第1个li</li> <li>我是第2个li</li> <li>我是第3个li</li> <li>我是第4个li</li> <li>我是第5个li</li> </ul> </body>detach删除之后再重新添加,原有事件可以响应 var $div = ( " d i v " ) . d e t a c h ( ) ; / / c o n s o l e . l o g ( ("div").detach(); // console.log( ("div").detach();//console.log(div); ( " b o d y " ) . a p p e n d ( ("body").append( ("body").append(div); }); $(“div”).click(function () { alert(“div被点击了”); }); });
删除节点 我是第1个li我是第2个li我是第3个li我是第4个li我是第5个li 我是div我是段落
```替换 replaceWith(content|fn) replaceAll(selector) 替换所有匹配的元素为指定的元素
<script> $(function () { /* 替换 replaceWith(content|fn) replaceAll(selector) 替换所有匹配的元素为指定的元素 */ $("button").click(function () { // 1.新建一个元素 var $h6 = $("<h6>我是标题6</h6>"); // 2.替换元素 // $("h1").replaceWith($h6); $h6.replaceAll("h1"); }); }); </script> </head> <body> <button>替换节点</button> <h1>我是标题1</h1> <h1>我是标题1</h1> <p>我是段落</p> </body>如果传入false就是浅复制, 如果传入true就是深复制 浅复制只会复制元素, 不会复制元素的事件 深复制会复制元素, 而且还会复制元素的事件
<script> $(function () { // clone([Even[,deepEven]]) /* 如果传入false就是浅复制, 如果传入true就是深复制 浅复制只会复制元素, 不会复制元素的事件 深复制会复制元素, 而且还会复制元素的事件 */ $("button").eq(0).click(function () { // 1.浅复制一个元素 var $li = $("li:first").clone(false); // 2.将复制的元素添加到ul中 $("ul").append($li); }); $("button").eq(1).click(function () { // 1.深复制一个元素 var $li = $("li:first").clone(true); // 2.将复制的元素添加到ul中 $("ul").append($li); }); $("li").click(function () { alert($(this).html()); }); }); </script> </head> <body> <button>浅复制节点</button> <button>深复制节点</button> <ul> <li>我是第1个li</li> <li>我是第2个li</li> <li>我是第3个li</li> <li>我是第4个li</li> <li>我是第5个li</li> </ul> </body>