一、JQuery引入
jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。
下载方式:https://code.jquery.com/jquery-3.4.1.min.js
打开当前链接,右键选择另存为即可。
引入方式
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
加载方式
<script>
window.onload = function(){
var $div = $("#test");
alert($div);
}
</script>
<script>
$(document).ready(function(){
var $div = $("div");
alert($div);
})
</script>
<script>
$(function(){
var $div = $("div");
alert($div);
})
</script>
$是javascript中封装的一个函数,专门用来获取DOM元素。
二、选择器详解
2.1 JQuery选择器
1.id选择器
<style>
#test{
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
var $div = $("#test");
alert($div.css("color"));
})
</script>
<body>
<div id="test">这是一个div元素</div>
</body>
2.类选择器
<style>
.box{
color: green;
font-size: 30px;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
var $box = $(".box");
// 只显示行内样式的属性值
alert($box.css("font-size"));
})
</script>
<body>
<div class="box" style="font-size: 20px;">hello world</div>
</body>
3.包含选择器
<style>
.list li{
background-color: pink;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
var $lis = $(".list li");
alert($lis.css("background-color"))
// 修改li标签的样式
$lis.css({'background-color':'gray','color':'red'});
})
</script>
<body>
<ul class="list">
<li>美元</li>
<li>欧元</li>
<li>人民币</li>
<li>日元</li>
</ul>
</body>
4.name属性选择器
<style>
input[name="username"]{
background-color: green;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
var $username = $("input[name='username']");
alert($username.css("background-color"))
})
</script>
<body>
<form action="">
<input type="text" name="username" value="">
</form>
</body>
2.2 过滤选择器
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
$('div').css({"backgroundColor":"red"});
// 选择含有p标签的div元素
$('div').has('p').css({backgroundColor:"gray"});
// 选择类名不是MyClass的div元素
$('div').not(".myclass").css({backgroundColor:"yellow"});
// 选择类名为myClass的div元素
$('div').filter(".myclass").css({backgroundColor:"green"});
// 选择第6个div元素-->下标从0开始
$('div').eq(5).css({"font-size":"30px"});
})
</script>
<body>
<div>1</div>
<div><p>2</p></div>
<div class="myclass">3</div>
<div class="myclass">4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</body>
2.3 选择集转移
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
// 获取被选择div元素之前的一个同辈元素
$('div').eq(5).prev().css({"font-size":"20px"});
// 获取被选择div元素之前的所有同辈元素
$('div').eq(5).prevAll().css({"backgroundColor":"red"});
// 获取被选择div元素之后的一个同辈元素
$('div').eq(5).next().css({"font-size":"30px"})
// 获取被选择div元素之后的所有同辈元素
$('div').eq(5).nextAll().css({"backgroundColor":"gray"})
// 获取被选择div元素的父元素
alert($('div').eq(5).parent());
// 获得被选择元素所有子元素
$('div').has('p').children().css({backgroundColor:"gray"});
// 获得被选择div元素的子元素中类名为myClass的元素
$('div').not('.myclass').find('.myclass').css({"backgroundColor":"pink"});
})
</script>
<body>
<div>1</div>
<div><p>2</p></div>
<div class="myclass">3</div>
<div class="myclass">4</div>
<div><h1 class="myclass">5</h1></div>
<div>6</div>
<div>7</div>
<div>8</div>
</body>
JQuery的容错机制
jquery有容错机制所以即使没有找到元素,也不会出错。
可以用length属性来判断是否找到了元素。
length=0->没选择到。l
ength大于0->选择到了
三、属性操作
3.1 获取标签属性
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
// 覆盖式修改标签内容--->百度一下修改为链接
$a=$('a');
$a.html("链接")
// 获取标签的值
$inp = $('input')
console.log($inp.val());
// 获取标签的官方指定属性
$img = $('img');
// src属性值为绝对路径
console.log($img.prop("src"));
// 修改官方指定属性的值
$img.prop({"src":"F:\\Amyweb\\魏无羡.jpg"})
console.log($img.prop("src"));
// 获取自定义属性的值
console.log($img.attr("xxx"))
// 添加自定义属性的值
$img.attr({"mmm":"nnnn"})
console.log($img.attr("mmm"))
// 修改自定义属性的值
$img.attr({"xxx":"nnnn"})
console.log($img.attr("xxx"))
})
</script>
<body>
<a href="http://www.baidu.com">百度一下</a>
<img src="123.jpg" alt="" xxx="yyy">
<input type="text" value="123">
</body>
3.2 操作类名样式
<style>
.box{
width: 200px;
height: 200px;
background-color: orange;
}
.box1{
font-size: 30px;
}
.box2{
color: blue;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
// 为div添加class为box1的css样式
$div = $('.box');
// $div.addClass('box1');
// 为div添加class为box1,box2的css样式
$div.addClass('box1 box2');
// 移除div中class为box1的css样式
$div.removeClass('box1');
// 移除iv中class为box1,box2的css样式
$div.removeClass('box1 box2');
}
</script>
<body>
<div class="box">我是robot</div>
</body>
选项卡案例
<style>
.btns input{
width: 100px;
height: 40px;
border: 0;
}
.btns .current{
background-color: pink;
}
.box div{
width:400px;
height: 300px;
background-color: pink;
display: none;
text-align: center;
font-size: 40px;
line-height: 300px;
}
.box .active{
display: block;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
var $btn = $('.btns input');
var $div = $('.box div')
$btn.click(function(){
// $(this) 当前点击的input按钮
$(this).addClass('current');
// 同级元素移除current样式
$(this).siblings().removeClass('current');
// 和他下标相同的div元素添加active类名样式
// 当前div同级的其他div元素移除active类名样式
$div.eq($(this).index()).addClass('active').siblings().removeClass('active');
})
})
</script>
<body>
<div class="btns">
<input type="button" value="我的关注" class="current">
<input type="button" value="导航">
<input type="button" value="收藏">
</div>
<div class="box">
<div class="active"><span>选项卡内容1</span></div>
<div><span>选项卡内容2</span></div>
<div><span>选项卡内容3</span></div>
</div>
</body>
四、事件
<style>
.box{
background-color: yellow;
width: 200px;
height:200px;
}
.box .son{
background-color: blue;
width:100px;
height: 100px;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
var $inp1 = $('#inp1');
// 直接聚焦到input输入框
$inp1.focus();
var $inp2 = $('#inp2');
// 内容修改+失焦-->触发change事件
$inp2.change(function(){
$val = $(this).val();
alert($val)
})
var $div=$('.box');
鼠标悬停到父子元素都会触发mouseover事件
$div.mouseover(function(){
alert('移入');
})
// 鼠标移出父子元素都会触发
$div.mouseout(function(){
alert('移出');
})
鼠标悬停到子元素不会触发mouseenter
$div.mouseenter(function(){
alert('移入')
})
// 鼠标移出子元素不会触发mouseleave
$div.mouseleave(function(){
alert('移出')
})
同时完成mouseenter和mouseleave事件
$div.hover(function(){
alert('移入');
},function(){
alert('移出');
})
// 捕获窗口大小
$(window).resize(function(){
var $w = $(window).width();
document.title = $w
})
})
</script>
<body>
<div class="box">
<div class="son"></div>
</div>
<form action="">
<!-- autofocus属性 自动聚焦到inp1输入框 -->
<input type="text" id="inp1">
<input type="text" id="inp2">
</form>
</body>
五、特殊效果
fadeOut() // 淡出
fadeToggle() // 切换淡入淡出
hide() // 隐藏元素
show() // 显示元素
toggle() // 切换元素的可见状态
slideDown() // 向下展开
slideUp() // 向上卷起
slideToggle() // 依次展开或者卷起某个元素
<style>
.box{
width: 300px;
height: 300px;
background-color: gold;
display: none;
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
var $div = $('.box')
var $btn = $('.btn')
$btn.click(function(){
// 淡入 css样式-->display:none
$div.fadeIn();
// 淡出 css样式--》不添加display
$div.fadeOut();
// 淡入淡出交替执行
$div.fadeToggle();
// 向下展开 css样式-->display:none
$div.slideDown();
// 向上收起 css样式--》不添加display
$div.slideUp();
// 交替执行展开收起
$div.slideToggle();
})
})
</script>
<body>
<div class="box"></div>
<button class="btn">渲染效果</button>
</body>
六、动画
通过动画实现增加div元素的宽度
<style>
.box{
width: 300px;
height: 300px;
background-color: gold;
/*display: none;*/
}
</style>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(function(){
var $div = $('.box')
var $btn = $('.btn')
$btn.click(function(){
$div.animate({'width':'400px'},1000)
// 先自动增减高400px,再增加宽400px
$div.animate({'height':'400px'},1000,function(){
$div.animate({'width':'400px'});
});
})
})
</script>
<body>
<div class="box"></div>
<button class="btn">渲染效果</button>
</body>