jquery 入门
等待文档加载完毕
将获取元素的语句写到页面头部,会因为元素还没有加载而出错,jquery提供了ready方法解决这个问题,它的速度比原生的 window.onload 更快。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
// alert($);
window.onload = function(){
var oDiv = document.getElementById("div1");
alert("原生js获取的div" + oDiv);
}
// write less and do more
/*
$(document).ready(function(){
var $div = $("#div1");
alert("jquery获取的div" + $div);
})
*/
// ready 简写
$(function(){
var $div = $("#div1");
alert("jquery获取的div" + $div);
})
</script>
</head>
<body>
<div id="div1">hello world</div>
</body>
</html>
jquery选择器
选择某个网页元素,然后对它进行某种操作
jquery选择器
jquery选择器可以快速地选择元素,选择规则和css样式相同,使用length属性判断是否选择成功。
$('#myId') //选择id为myId的网页元素
$('.myClass') // 选择class为myClass的元素
$('li') //选择所有的li元素
$('#ul1 li span') //选择id为为ul1元素下的所有li下的span元素
$('input[name=first]') // 选择name属性等于first的input元素
对选择集进行过滤
$('div').has('p'); // 选择包含p元素的div元素
$('div').not('.myClass'); //选择class不等于myClass的div元素
$('div').eq(5); //选择第6个div元素
选择集转移
$('#box').prev(); //选择id是box的元素前面紧挨的同辈元素
$('#box').prevAll(); //选择id是box的元素之前所有的同辈元素
$('#box').next(); //选择id是box的元素后面紧挨的同辈元素
$('#box').nextAll(); //选择id是box的元素后面所有的同辈元素
$('#box').parent(); //选择id是box的元素的父元素
$('#box').children(); //选择id是box的元素的所有子元素
$('#box').siblings(); //选择id是box的元素的同级元素
$('#box').find('.myClass'); //选择id是box的元素内的class等于myClass的元素
判断是否选择到了元素
jquery有容错机制,即使没有找到元素,也不会出错,可以用length属性来判断是否找到了元素,length等于0,就是没选择到元素,length大于0,就是选择到了元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function(){
// 选择元素
var $div = $("#div1");
var $div2 = $(".box");
var $li = $("li");
var $span = $('.box span');
var $div3 = $("div[class='box2']");
var $div4 = $("div").has("span");
var $div5 = $("div").not(".box");
var $li2 = $("li").eq(2);
// 设置样式
$div.css({'color':'red', 'font-size': '100px'});
$div2.css({'color':'green', 'font-size': 40});
$li.css({'background':'gold'});
$span.css({"color": 'blue'});
$div3.css({'font-size':30, 'color':'pink'});
$div4.css({"text-indent":50});
$div5.css({"text-decoration":"underline"});
$li2.css({"list-style":"none", "text-indent":40});
})
</script>
</head>
<body>
<div id="div1">hello world</div>
<div class="box">绿了 变强了<span> 要坚强</span></div>
<div class="box">秃了 变强了</div>
<div class="box2">打工是不可能打工的</div>
<ul>
<li>礼拜文字</li>
<li>礼拜文字</li>
<li>礼拜文字</li>
<li>礼拜文字</li>
<li>礼拜文字</li>
<li>礼拜文字</li>
<li>礼拜文字</li>
<li>礼拜文字</li>
</ul>
</body>
</html>
jquery选择及转移
选择及转移
prev()上一个
prevAll() 所有上一个
next() 后面的
nextALL()所有后面的
parent()父级
children()子级
siblings() 反选
find() 查找
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function(){
var $div = $("#div1");
$div.prev() // 上面一个兄弟节点
$div.prev().css({"color":'green'});
$div.prevAll().css({"text-indent":40});
$div.next().css({"color":'blue'});
$div.nextAll().css({"text-decoration":"underline"});
$div.parent().css({"background":"#add"});
$div.children().css({"color":'red','font-size':100});
$div.siblings().css({"background":"gold"});
// 字体加粗
$div.find(".sp02").css({'font-weight':10000});
})
</script>
</head>
<body>
<div>
<h2>hhhhhhhhhhhh2</h2>
<p>ppppppppp1</p>
<div id="div1">div1<span>span<span class="sp02"> span2</span></div>
<h3>hhhh3</h3>
<p>pppppppppp2</p>
</div>
</body>
</html>
jquery操作元素样式
同一个函数完成取值和赋值
特别注意
选择器获取的多个元素,获取信息获取的是第一个,比如: $(“div”).css(“width”),获取的是第一个div的width。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function(){
var $div = $("#div1");
// 读取样式属性值
var sSize = $div.css('font-size');
alert(sSize);
// 元素方法获取文字大小
// var div1 = document.getElementById("div1");
// alert(div1.style.fontSize);
// 写样式属性 也叫做设置 修改样式属性
$div.css({'color':'red'});
$div.css({"font-size":30, 'background':'gold'});
// 获取多个元素的属性值 得到的是第一个样式
var $div2 = $("div");
var sSize3 = $div2.css('font-size');
alert(sSize3);
})
</script>
</head>
<body>
<div id="div1" style="font-size: 16px">妈卖批</div>
<div>second</div>
</body>
</html>
jquery 操作样式类名
选择器获取的多个元素,获取信息获取的是第一个,比如:$(“div”).css(“width”),获取的是第一个div的width。
操作样式类名
$("#div1").addClass("divClass2") //为id为div1的对象追加样式divClass2
$("#div1").removeClass("divClass") //移除id为div1的对象的class名为divClass的样式
$("#div1").removeClass("divClass divClass2") //移除多个样式
$("#div1").toggleClass("anotherClass") //重复切换anotherClass样式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.big{
font-size: 30px;
}
.red{
color: red;
}
.online{
text-decoration: none;
}
</style>
<script src="./js/jquery-1.12.4.min.js"></script>
<script>
$(function(){
var $a = $("#link01");
$a.addClass("big");
$a.addClass("red");
$a.addClass("online");
$a.remove("big");
})
</script>
</head>
<body>
<a href="#" id="link01">这是一个链接</a>
</body>
</html>
绑定click事件
给元素绑定click事件,可以用如下方法:
$('#btn1').click(function(){
// 内部的this指的是原生对象
// 使用jquery对象用 $(this)
})
获取元素的索引值
有时候需要获得匹配元素相对于其同胞元素的索引位置,此时可以用index()方法获取
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function(){
var $li = $(".list li");
var $p = $('p');
// 绑定click事件
$li.click(function () {
// this 指的是当前发生点击事件的那个对象;
// this 它是原生对象
this.style.background = 'gold';
// $(this) 指的是当前发生点击事件的jquery对象
$(this).css({"background":"red"});
// alert("ok");
// 获取元素的索引值
alert($(this).index());
})
$p.click(function () {
alert($(this).index())
})
})
</script>
</head>
<body>
<ul class="list">
<li>列表文字</li>
<li>列表文字</li>
<li>列表文字</li>
<li>列表文字</li>
<li>列表文字</li>
<li>列表文字</li>
<li>列表文字</li>
<li>列表文字</li>
<div>
<p>这是第二个p标签</p>
</div>
</ul>
</body>
</html>
jqury制作动画
通过animate方法可以设置元素某属性值上的动画,可以设置一个或多个属性值,动画执行完成后会执行一个函数。
/*
animate参数:
参数一:要改变的样式属性值,写成字典的形式
参数二:动画持续的时间,单位为毫秒,一般不写单位
参数三:动画曲线,默认为‘swing’,缓冲运动,还可以设置为‘linear’,匀速运动
参数四:动画回调函数,动画完成后执行的匿名函数
*/
$('#div1').animate({
width:300,
height:300
},1000,'swing',function(){
alert('done!');
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.box{
width: 200px;
height: 200px;
background: gold;
}
</style>
<script src="./js/jquery-1.12.4.min.js"></script>
<script>
$(function () {
var $btn = $("#btn");
var $div = $(".box");
// 绑定点击事件
$btn.click(function(){
// $div.css({'width':1000})
$div.animate({"width":1000}, 1000, function(){
$div.animate({"margin-top":300}, 1000, function () {
$div.animate({"width":200, "margin-top":0}, 1000)
})
})
})
})
</script>
</head>
<body>
<input type="button" value="动画" id="btn">
<div class="box">
</div>
</body>
</html>
练习 选项卡制作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.tab_con{
width:500px;
height:350px;
margin:50px auto 0;
}
.tab_btns{
height:50px;
}
.tab_btns input{
width:100px;
height:50px;
background:#ddd;
border:0px;
outline:none;
}
.tab_btns .active{
background:gold;
}
.tab_cons{
height:300px;
background:gold;
}
.tab_cons div{
height:300px;
line-height:300px;
text-align:center;
display:none;
font-size:30px;
}
.tab_cons .current{
display:block;
}
</style>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function () {
var $btn = $(".tab_btns input");
var $div = $(".tab_cons div");
$btn.click(function () {
$(this).addClass('active').siblings().removeClass("active");
// alert($(this).index());
$div.eq($(this).index()).addClass("current").siblings().removeClass("current");
})
})
</script>
</head>
<body>
<div class="tab_con">
<div class="tab_btns">
<input type="button" value="按钮一" class="active">
<input type="button" value="按钮二">
<input type="button" value="按钮三">
</div>
<div class="tab_cons">
<div class="current">按钮一对应的内容</div>
<div>按钮二对应的内容</div>
<div>按钮三对应的内容</div>
</div>
</div>
</body>
</html>