jQuery学习笔记--效果,操作html元素,遍历DOM树
参考W3school: http://www.w3school.com.cn/jquery/jquery_hide_show.asp jQuery效果: 隐藏: 基础语句: $(selector).hide(speed,callback); 可选的 speed 参数规定隐藏/显示的速度,可以取以下值:”slow”、”fast” 或毫秒。 可选的 callback 参数是隐藏或显示完成后所执行的函数名称。 实现:单击p标签的文字 文字消失 <script> $(document).ready(function(){ $("p").click(function(){ $(this).hide(); }); }); </script> 实现:单击button按钮 文字在2秒内消失 <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ $("p").hide(2000); }); }); </script> 实现:单击按钮 包含按钮的div缓慢隐藏 <!DOCTYPE html> <html> <head> <script src="/jquery/jquery-1.11.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".ex .hide").click(function(){ $(this).parents(".ex").hide("slow"); }); }); </script> <style type="text/css"> div.ex { background-color:#e5eecc; padding:7px; border:solid 1px #c3c3c3; } </style> </head> <body> <div class="ex"> <button class="hide" type="button">隐藏</button> <p>大家好<br /> 我是小莫<br /> 哈哈</p> </div> </body> </html> 注意: parents(“.ex”)父亲节点中class为ex的元素 div.ex表示 又是div又是class为ex的元素 div .ex则表示 div中 class为ex的元素 区别 中间空格 而#ex则表示id为ex的元素 $(“.ex .hide”)表示class为ex元素中的class为hide的元素 hide(“slow”)是缓慢消失的意思 显示: 基础语句: $(selector).show(speed,callback); 可选的 speed 参数规定隐藏/显示的速度,可以取以下值:”slow”、”fast” 或毫秒。 可选的 callback 参数是隐藏或显示完成后所执行的函数名称。 实现:单击id为show的元素时候p文本文件显示 <script type="text/javascript"> $(document).ready(function(){ $("#show").click(function(){ $("p").show(); }); }); </script> 那有没有方法实现hide和show转换的呢? 有,还真有 那就是toggle()函数: 显示被隐藏的元素,并隐藏已显示的元素: 语法: $(selector).toggle(speed,callback); 可选的 speed 参数规定隐藏/显示的速度,可以取以下值:”slow”、”fast” 或毫秒。 可选的 callback 参数是 toggle() 方法完成后所执行的函数名称。 <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ $("p").toggle(); }); }); </script> 淡入淡出: 淡入: 实现:单击按钮 id为div1的淡入 id为div2缓慢淡入 id为div3 3秒内淡入 前提三个div中style:display:none fadeIn() <script> $(document).ready(function(){ $("button").click(function(){ $("#div1").fadeIn(); $("#div2").fadeIn("slow"); $("#div3").fadeIn(3000); }); }); </script> 淡出: fadeOut()类似fadeIn() <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ $("#div1").fadeOut(); $("#div2").fadeOut("slow"); $("#div3").fadeOut(3000); }); }); </script> 转换淡入淡出: fadeToggle()类似于上文的toggle() <script> $(document).ready(function(){ $("button").click(function(){ $("#div1").fadeToggle(); $("#div2").fadeToggle("slow"); $("#div3").fadeToggle(3000); }); }); </script> 可以指定淡出的透明度: fadeTo(速度,透明度); <script> $(document).ready(function(){ $("button").click(function(){ $("#div1").fadeTo("slow",0.1); $("#div2").fadeTo("slow",0.4); $("#div3").fadeTo("slow",0.7); }); }); </script> 总结: 通过 jQuery,您可以实现元素的淡入淡出效果。 jQuery 拥有下面四种 fade 方法: fadeIn() 淡入 fadeOut() 淡出 fadeToggle() 转换淡入淡出 fadeTo() 指定淡出透明度 jQuery fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。 如果元素已淡出,则 fadeToggle() 会向元素添加淡入效果。 如果元素已淡入,则 fadeToggle() 会向元素添加淡出效果。 语法: $(selector).fadeIn(speed,callback); $(selector).fadeOut(speed,callback); $(selector).fadeToggle(speed,callback); 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。 可选的 callback 参数是 fading 完成后所执行的函数名称。 fadeTo有点不同: $(selector).fadeTo(speed,opacity,callback); fadeTo() 方法中必需的 opacity 参数将淡入淡出效果设置为给定的不透明度(值介于 0 与 1 之间)。 滑动: jQuery 拥有以下滑动方法: slideDown() slideUp() slideToggle() slideDown() 向下滑动显示: div.panel { height:120px; display:none; } <script type="text/javascript"> $(document).ready(function(){ $(".flip").click(function(){ $(".panel").slideDown("slow"); }); }); </script> slideUp() 向上滑动隐藏 div.panel { height:120px; } <script type="text/javascript"> $(document).ready(function(){ $(".flip").click(function(){ $(".panel").slideUp("slow"); }); }); </script> 转换滑动方向也相当于 转换显示和隐藏 slideToggle() 如果元素向下滑动,则 slideToggle() 可向上滑动它们。 如果元素向上滑动,则 slideToggle() 可向下滑动它们。 div.panel { height:120px; display:none; } <script type="text/javascript"> $(document).ready(function(){ $(".flip").click(function(){ $(".panel").slideToggle("slow"); }); }); </script> 语法: $(selector).slideDown(speed,callback); (selector).slideUp(speed,callback);(selector).slideUp(speed,callback);(selector).slideToggle(speed,callback); 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。 可选的 callback 参数是滑动完成后所执行的函数名称。 动画: animate() 方法用于创建自定义动画 语法: $(selector).animate({params},speed,callback); 必需的 params 参数定义形成动画的 CSS 属性。 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。 可选的 callback 参数是动画完成后所执行的函数名称。 单击按钮 div元素移动到离左端100px的地方 <script> $(document).ready(function(){ $("button").click(function(){ $("div").animate({left:'100px'}); }); }); </script> <div style="background:#98bf21;height:100px;width:100px;position:absolute;"> 也可以操作多个属性: {params}中有多个属性 里面是最终的状态 举个栗子: 离左端250px 透明度50% 高度150px 宽150px <script> $(document).ready(function(){ $("button").click(function(){ $("div").animate({ left:'250px', opacity:'0.5', height:'150px', width:'150px' }); }); }); </script> 可以使用相对值: <script> $(document).ready(function(){ $("button").click(function(){ $("div").animate({ left:'250px', height:'+=150px', width:'+=150px' }); }); }); </script> 使用预定义的值: 把属性的动画值设置为 “show”、”hide” 或 “toggle” 高度显示和隐藏通过按钮转换 <script> $(document).ready(function(){ $("button").click(function(){ $("div").animate({ height:'toggle' }); }); }); </script> 队列功能: 依次执行animate <script> $(document).ready(function(){ $("button").click(function(){ var div=$("div"); div.animate({height:'300px',opacity:'0.4'},"slow"); div.animate({width:'300px',opacity:'0.8'},"slow"); div.animate({height:'100px',opacity:'0.4'},"slow"); div.animate({width:'100px',opacity:'0.8'},"slow"); }); }); </script> 总结: 默认情况下,所有 HTML 元素的位置都是静态的,并且无法移动。如需对位置进行操作,记得首先把元素的 CSS position 属性设置为 relative、fixed 或 absolute。 注意: 提示:可以用 animate() 方法来操作所有 CSS 属性吗? 是的,几乎可以!不过,需要记住一件重要的事情:当使用 animate() 时,必须使用 Camel 标记法书写所有的属性名,比如,必须使用 paddingLeft 而不是 padding-left,使用 marginRight 而不是 margin-right,等等。 同时,色彩动画并不包含在核心 jQuery 库中。 如果需要生成颜色动画,您需要从 jQuery.com 下载 Color Animations 插件。 stop() stop() 方法用于停止动画或效果,在它们完成之前。 stop() 方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画。 id为panel动画下滑的时候 单击id为panel的按钮暂停 单击id为flip的按钮继续 <script> $(document).ready(function(){ $("#flip").click(function(){ $("#panel").slideDown(5000); }); $("#stop").click(function(){ $("#panel").stop(); }); }); </script> 注意: stop语法 $(selector).stop(stopAll,goToEnd); 可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。 可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。 Callback 函数 在当前动画 100% 完成之后执行。 实现:单击按钮 文字文本1秒内隐藏后 输出”hahaha” <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ $("p").hide(1000,function(){ alert("hahaha"); }); }); }); </script> 一种名为链接(chaining)的技术,允许我们在相同的元素上运行多条 jQuery 命令,一条接着另一条。 举个栗子: “p1” 元素首先会变为红色,然后向上滑动,然后向下滑动 $("#p1").css("color","red").slideUp(2000).slideDown(2000); 等效于: $("#p1").css("color","red") .slideUp(2000) .slideDown(2000); jQuery 会抛掉多余的空格,并按照一行长代码来执行上面的代码行。 jQuery操作DOM 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 举个栗子: <script> $(document).ready(function(){ $("#btn1").click(function(){ alert("Text: " + $("#test").text()); }); $("#btn2").click(function(){ alert("HTML: " + $("#test").html()); }); }); </script> <p id="test">这是段落中的<b>粗体</b>文本。</p> 第一个alert返回的是 这是段落中的粗体文本。 第二个alert返回的是 这是段落中的<b>粗体</b>文本。 <script> $(document).ready(function(){ $("button").click(function(){ alert("Value: " + $("#test").val()); }); }); </script> 返回的是表单的内容 如果是text返回的是 输入的值或者默认值 attr() 方法用于获取属性值。 返回的是id为w3s的href属性值 <script> $(document).ready(function(){ $("button").click(function(){ alert($("#w3s").attr("href")); }); }); </script> 也可直接通过上述方法修改内容 举个栗子: 修改id为test1的文本文件值为”Hello world!” 修改id为test2的html内容为<b>Hello world!</b> 修改id为test3的内容为Dolly Duck <script> $(document).ready(function(){ $("#btn1").click(function(){ $("#test1").text("Hello world!"); }); $("#btn2").click(function(){ $("#test2").html("<b>Hello world!</b>"); }); $("#btn3").click(function(){ $("#test3").val("Dolly Duck"); }); }); </script> 设置属性 - attr() 修改id为w3s的href属性为 http://www.w3school.com.cn/jquery $("button").click(function(){ $("#w3s").attr("href","http://www.w3school.com.cn/jquery"); }); attr() 方法也允许您同时设置多个属性。 $("button").click(function(){ $("#w3s").attr({ "href" : "http://www.w3school.com.cn/jquery", "title" : "hhaha" }); }); attr其实有个问题 如果涉及到复选框之类的设置true false值的时候就不可靠 要用prop 使用attr获取checked属性时返回”checked”和”“,现在使用prop方法获取属性则统一返回true和false。 那么,什么时候使用attr(),什么时候使用prop()? 1.添加属性名称该属性就会生效应该使用prop(); 2.是有true,false两个属性使用prop(); 3.其他则使用attr(); 参考: https://www.cnblogs.com/smartXiang/p/5686800.html text()、html() 以及 val() 的回调函数 回调函数由两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串。 $("#btn1").click(function(){ $("#test1").text(function(i,origText){ return "Old text: " + origText + " New text: Hello world! (index: " + i + ")"; }); }); $("#btn2").click(function(){ $("#test2").html(function(i,origText){ return "Old html: " + origText + " New html: Hello <b>world!</b> (index: " + i + ")"; }); }); $("button").click(function(){ $("#w3s").attr("href", function(i,origValue){ return origValue + "/jquery"; }); }); 添加新的 HTML 内容 append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() - 在被选元素之前插入内容 append(): 元素结尾插入 在p结尾添加粗体 在ol列表中结尾添加一行 <script> $(document).ready(function(){ $("#btn1").click(function(){ $("p").append(" <b>Appended text</b>."); }); $("#btn2").click(function(){ $("ol").append("<li>Appended item</li>"); }); }); </script> appendTo跟append相反 prepend():元素开头插入 <script> $(document).ready(function(){ $("#btn1").click(function(){ $("p").prepend("<b>Prepended text</b>. "); }); $("#btn2").click(function(){ $("ol").prepend("<li>Prepended item</li>"); }); }); </script> append和prepend可以一次性添加多个 function appendText() { var txt1="<p>Text.</p>"; // 以 HTML 创建新元素 var txt2=$("<p></p>").text("Text."); // 以 jQuery 创建新元素 var txt3=document.createElement("p"); // 以 DOM 创建新元素 txt3.innerHTML="Text."; $("p").append(txt1,txt2,txt3); // 追加新元素 } after() 和 before() 元素前面和元素后面添加元素 <script> $(document).ready(function(){ $("#btn1").click(function(){ $("img").before("<b>Before</b>"); }); $("#btn2").click(function(){ $("img").after("<i>After</i>"); }); }); </script> 通过 after() 和 before() 方法添加若干新元素 <script> function afterText() { var txt1="<b>I </b>"; // 以 HTML 创建元素 var txt2=$("<i></i>").text("love "); // 通过 jQuery 创建元素 var txt3=document.createElement("big"); // 通过 DOM 创建元素 txt3.innerHTML="jQuery!"; $("img").after(txt1,txt2,txt3); // 在 img 之后插入新元素 } </script> 删除元素 remove() - 删除被选元素(及其子元素) empty() - 从被选元素中删除子元素 举个栗子: 删除id为div1的元素 删除id为div2的元素中的子元素 $("#div1").remove(); $("#div2").empty(); 过滤被删除的元素 添加参数即可 删除 class=”italic” 的所有 元素 $("p").remove(".italic"); 获取并设置 CSS 类 addClass() - 向被选元素添加一个或多个类 removeClass() - 从被选元素删除一个或多个类 toggleClass() - 对被选元素进行添加/删除类的切换操作 css() - 设置或返回样式属性 addClass() 向元素添加css样式 也可向多个元素添加同一个css样式 $("button").click(function(){ $("h1,h2,p").addClass("blue"); $("div").addClass("important"); }); removeClass() 移除一个或者多个类的css样式 $("button").click(function(){ $("h1,h2,p").removeClass("blue"); }); toggleClass() 该方法对被选元素进行添加/删除类的切换操作 先添加blue样式 后删除blue样式 $("button").click(function(){ $("h1,h2,p").toggleClass("blue"); }); 返回 CSS 属性 css() 设置或返回被选元素的一个或多个样式属性 $(“p”).css(“background-color”); 如果有多个p则返回首个匹配元素的 background-color 值 设置 CSS 属性 所有匹配元素设置 background-color 值为yellow $("p").css("background-color","yellow"); 设置多个 CSS 属性 为所有匹配元素设置 background-color 和 font-size $("p").css({"background-color":"yellow","font-size":"200%"}); jQuery 提供多个处理尺寸的重要方法: width()不包括内边距、边框或外边距 height()不包括内边距、边框或外边距 innerWidth()包括内边距 innerHeight()包括内边距 outerWidth()包括内边距和边框 outerHeight()包括内边距和边框 outerWidth(true) 方法返回元素的宽度(包括内边距、边框和外边距)。 outerHeight(true) 方法返回元素的高度(包括内边距、边框和外边距)。 设置指定的 <div >元素的宽度和高度 $("button").click(function(){ $("#div1").width(500).height(500); }); 返回文档(HTML 文档)和窗口(浏览器视口)的宽度和高度 $("button").click(function(){ var txt=""; txt+="Document width/height: " + $(document).width(); txt+="x" + $(document).height() + "\n"; txt+="Window width/height: " + $(window).width(); txt+="x" + $(window).height(); alert(txt); }); 遍历: 向上遍历 DOM 树 parent() 返回被选元素的直接父元素 返回span元素的直接父类 $("span").parent(); parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 ()。 所有的span的祖先元素的css元素都设置为红色 $("span").parents().css("color":"red"); 返回所有 元素的所有祖先,并且它是 <ul>>元素 $(document).ready(function(){ $("span").parents("ul"); }); span的所有祖先父类 但是低于div元素父类 就是介于span和div之间的所有元素 $(document).ready(function(){ $("span").parentsUntil("div"); }); 向下遍历 DOM 树 children() 方法返回被选元素的所有直接子元素 返回每个 <div>元素的所有直接子元素 $(document).ready(function(){ $("div").children(); }); 可以使用可选参数来过滤对子元素的搜索 比如: 返回类名为 “1” 的所有 <p> 元素,并且它们是 <div>的直接子元素 $("div").children("p.1"); find() 返回被选元素的后代元素,一路向下直到最后一个后代。 比如: <div> 后代的所有 <span> 元素 $(document).ready(function(){ $("div").find("span"); }); 返回 <div>>的所有后代: $(document).ready(function(){ $("div").find("*"); }); 同胞遍历: siblings() 返回被选元素的所有同胞元素 next() 返回被选元素的下一个同胞元素 只有一个 nextAll() 返回被选元素的所有跟随的同胞元素 nextUntil() 回介于两个给定参数之间的所有跟随的同胞元素 prev() prevAll() prevUntil() prev(), prevAll() & prevUntil() 跟前面的一样 不过是向前而已 siblings() 返回被选元素的所有同胞元素 也可以使用可选参数来过滤对同胞元素的搜索。 $("h2").siblings(); 所有同胞 $("h2").siblings("p"); 是p类型的同胞 nextUntil() 举例: 返回介于 <h2>与 <h6>元素之间的所有同胞元素 不包括h2和h6 $(document).ready(function(){ $("h2").nextUntil("h6"); }); 过滤 first() 第一个元素 last() 最后一个元素 eq() 根据指定索引找元素 filter() 匹配元素 not() 返回不匹配的元素 它们允许您基于其在一组元素中的位置来选择一个特定的元素 first() 返回被选元素的首个元素。 选取首个 <div>元素内部的第一个 <p>元素 $(document).ready(function(){ $("div p").first(); }); last() 相反: 选择最后一个 <div> 元素中的最后一个 <p> 元素 $(document).ready(function(){ $("div p").last(); }); eq() 返回被选元素中带有指定索引号的元素 从0开始 举例:选取第二个 <p> 元素 $(document).ready(function(){ $("p").eq(1); }); filter() 返回匹配的元素 举例: 返回带有类名 “intro” 的所有 <p>元素 $(document).ready(function(){ $("p").filter(".intro"); }); not() 回不匹配标准的所有元素 not() 方法与 filter() 相反。 返回不带有类名 “intro” 的所有<p>元素 $(document).ready(function(){ $("p").not(".intro"); });