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

简介: 参考W3school:http://www.w3school.com.cn/jquery/jquery_hide_show.aspjQuery效果:隐藏:基础语句: $(selector).hide(speed,callback);可选的 speed 参数规定隐藏/显示的速度,可以取以下值:”slow”、”fast” 或毫秒。

参考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");
});
目录
相关文章
|
1月前
|
JavaScript 前端开发 UED
JavaScript基础-DOM操作:查找、创建、修改
【6月更文挑战第12天】本文介绍了DOM基础,包括查找元素(getElementById、getElementsByClassName等)、创建新节点(createElement、createTextNode)和修改节点(innerText、innerHTML、setAttribute等)。强调了易错点,如ID唯一性、性能考量和安全问题,并提供了代码示例。熟练掌握DOM操作对前端开发至关重要,但应注意性能优化,适时使用框架或库。
JavaScript基础-DOM操作:查找、创建、修改
|
14天前
|
JavaScript 前端开发
DOM操作有哪些方法可以改变元素的样式?
【6月更文挑战第30天】DOM操作有哪些方法可以改变元素的样式?
10 2
|
14天前
|
JavaScript 前端开发 开发者
DOM操作
【6月更文挑战第30天】DOM操作
13 1
|
1月前
|
JavaScript 前端开发 安全
【JavaScript 】DOM操作快速入门
【JavaScript 】DOM操作快速入门
17 2
|
16天前
|
JavaScript 前端开发 API
jQuery对象与DOM对象简介及相互转换
jQuery对象与DOM对象简介及相互转换
13 0
|
18天前
|
JSON JavaScript 数据格式
技术好文:tabel表格的dom操作
技术好文:tabel表格的dom操作
|
2月前
|
前端开发 JavaScript
HTML DOM如何通过JavaScript动态改变元素的CSS样式?
【5月更文挑战第23天】HTML DOM如何通过JavaScript动态改变元素的CSS样式?
40 1
|
2月前
|
JavaScript 前端开发 开发者
HTML DOM
【5月更文挑战第23天】HTML DOM
23 1
|
2月前
|
移动开发 JavaScript 前端开发
jQuery 根据 DOM 元素 attribute 进行过滤的语法
jQuery 根据 DOM 元素 attribute 进行过滤的语法
|
2月前
|
存储 移动开发 JavaScript
jQuery 根据 css 类筛选 DOM 元素的代码
jQuery 根据 css 类筛选 DOM 元素的代码