您现在的位置是:首页 > 文章详情

jQuery学习笔记--效果,操作html元素,遍历DOM树

日期:2018-05-18点击:341

参考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 方法:

  1. fadeIn() 淡入
  2. fadeOut() 淡出
  3. fadeToggle() 转换淡入淡出
  4. 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"); });

过滤

  1. first() 第一个元素
  2. last() 最后一个元素
  3. eq() 根据指定索引找元素
  4. filter() 匹配元素
  5. 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"); });
原文链接:https://yq.aliyun.com/articles/597363
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章