JQuery就是封装了大量js代码的函数库
使用Jquery的好处
jquery封装了大量的方法,完全不需要担心兼容性的问题,因为都已经被封装好了
JQuery完全开源,直接在官网上下载即可,这里附上官网链接
JQuery下载链接
直接通过url(CDN)在线访问JQuery库,这里附上几个常用url:
**微软jquery压缩版引用地址: **
**官网jquery压缩版引用地址: **
提示:jQuery官网引用地址最近国内访问会经常出现打不开的情况,请尽量不要调用官网引用地址!
百度 cdn:
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
新浪cdn:
<script src="https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js">script>
又拍云 CDN
<script src="https://upcdn.b0.upaiyun.com/libs/jquery/jquery-2.0.2.min.js">script>
下面是普通代码给DOM元素添加点击事件的不同写法比较
点我
由于过于繁杂,请查阅文档JQuery语法大全,下面仅给出示例:
点我
… 不止这些,请查看文档学习,授之以鱼不如授之以渔,接下来只会给出jquery的案例代码,可以帮助学习
JQuery语法大全
最后推荐三个能让前端页面更好看的学习任务
attr和prop的最大区别
对于表单元素的checked、selected、disabled等属性,在jQuery 1.6之前,attr()
获取这些属性的返回值为Boolean类型:如果被选中(或禁用)就返回true
,否则返回false
。
但是从1.6开始,使用attr()
获取这些属性的返回值为String类型,如果被选中(或禁用)就返回checked、selected或disabled,否则(即元素节点没有该属性)返回undefined
。并且,在某些版本中,这些属性值表示文档加载时的初始状态值,即使之后更改了这些元素的选中(或禁用)状态,对应的属性值也不会发生改变。
因为jQuery认为:attribute的checked、selected、disabled就是表示该属性初始状态的值,property的checked
、selected
、disabled
才表示该属性实时状态的值(值为true
或false
)。
因此,在jQuery 1.6及以后版本中,请使用prop()
函数来设置或获取checked
、selected
、disabled
等属性。对于其它能够用prop()
实现的操作,也尽量使用prop()
函数。
大家都知道原生js可以获取匹配元素的内部html和外部html,内部是innerHTML,外部是outerHTML,原生js的dom对象是存在这两个属性的,
document.getElementById(“linkType”).outerHTML;
如果用jQuery如何获取匹配元素(包括自身元素的html)呢?
既然存在这个属性,我们就可以用$("#linkType").prop(“outerHTML”)来获取;
可以通过$("#linkType").prop(“outerHTML”,outerHTML)赋值来改变outerHTML的内容;
值得注意的是jQuery的attr是获取不到这个属性值的。
DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
head>
<body>
<input type="checkbox" name="all" id="all">全选
<br>
<input type="checkbox" name="1" id="1">1
<br>
<input type="checkbox" name="2" id="2">2
<br>
<input type="checkbox" name="3" id="3">3
<br>
<input type="checkbox" name="4" id="4">4
body>
html>
<script>
$("#all").click(function(){
$(this).nextAll("input").prop('checked',$(this).prop('checked'));
});
$('input:not(:first)').click(function(){
var alllen = $('input:not(:first)').length;
var len = $('input:not(:first):checked').length;
if(alllen === len){
$('#all').prop('checked',true);
}else{
$('#all').prop('checked',false);
}
});
script>
DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
<style>
style>
head>
<body>
<button type="button">>>button>
<button type="button"><<button>
<button type="button">>button>
<button type="button"><button>
<br>
<select name="" id="1" multiple>
<option value="1">郑州option>
<option value="1">洛阳option>
<option value="1">周口option>
<option value="1">开封option>
select>
<select name="" id="2" multiple>select>
body>
html>
<script>
$('button').eq(0).click(function(){
$('select#1>option').appendTo("select#2");
}).next('button').click(function(){
// $('select#2>option').appendTo('select#1');
$("select#1").append($("select#2>option"));//用这种方式append方法内只能传递jquery对象
}).next('button').click(function(){
$("select#1>option:selected").appendTo("select#2");
}).next('button').click(function(){
$("select#2>option:selected").appendTo("select#1");
});
script>
DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
<style>
html,body{height: 100%;}
.wrapper{width: 400px;height: 100%;background-color: antiquewhite;margin: 0 auto;text-align: center;}
.context{border: 1px solid black;width: 400px;height: 67%;}
style>
head>
<body>
<div class="wrapper">
<textarea name="" id="content" cols="50" rows="20">textarea>
<input type="button" value="发表评论">
<input type="button" value="清空评论">
<div class="context">div>
div>
body>
html>
<script>
$('.wrapper>input[value=发表评论]').click(function(){
var content = $('.wrapper>#content').val();
// var op = $(''+content+'
');
var op = $('').text(content).css('border-bottom','1px dotted black');
$('.context').prepend(op);
$('.wrapper>#content').val("");
});
$('.wrapper>input[value=清空评论]').click(function(){
$('.context').empty();
});
script>
这个项目有一个未实现的问题,就是如果span标签离浏览器边缘太近的话,会造成字体竖向显示的效果,暂时没有找到解决方法
DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>弹幕效果title>
<style>
html,body{width: 100%;height: 100%;}
.show{width: 100%;height: 80%;background-color: whiteSmoke}
.bottom{width: 100%;height: 20%;text-align:center}
.bottom>input[type=text]{width: 300px;padding: 10px}
.bottom>input[type=button]{padding: 10px 20px;cursor: pointer;background-color: red;color: white}
span{position: absolute;font-size: 30px;}
style>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
head>
<body>
<div class="show">div>
<br>
<div class="bottom">
<input type="text" name="ctt" id="ctt" placeholder="请输入弹幕内容">
<input type="button" value="发送">
div>
body>
<script>
var width = document.body.clientWidth-350;//获取body中可视区域的宽度
var randColor = ["#FAEBD7","#00FFFF","#7FFFD4","#F5F5DC","#8A2BE2","#7FFF00","#1E90FF","ForestGreen","#FFB6C1"];
var randNum = parseInt(Math.random()*randColor.length);
$(".bottom>input[type=button]").click(function(){
var ctt = $(".bottom>#ctt").val();
var randPos = Math.random().toFixed(2)*400;
// 如果发送弹幕内容不为空,那么就创建一个span元素并且准备发射
if(ctt!=""){
//这里key值是否加引号都无所谓
$("").text(ctt).css({'color':randColor[randNum]+'px',
'left':width+'px','top':randPos+'px',
"overflow":"hidden"}).
animate({left:'-50px'},5000,'linear',function(){
$(this).remove();
}).appendTo($(".show"));
$(".bottom>#ctt").val("");
}
});
$(".bottom>input[type=text]").keyup(function(e){
if(e.keyCode ===13){
$(".bottom>input[type=button]").click();
}
});
script>
html>
width:获取某个属性上的width值,返回数字
innerWidth:获取padding+width的值
outerWidth:获取padding+width+border的值
outerWidth(true):获取padding+width+border+margin的值
scrollLeft:获取被卷曲的宽度
scrollTop:获取被卷曲的高度
offset:获取元素相对于document的位置
position:获取元素相对于有定位的父元素的位置
DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>获取可视区的宽高title>
<style>
.show{text-align: center;width: 700px;height: 400px;background-color: aqua;font-size: 30px;}
style>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
head>
<body>
<div class="show">可视区宽度:<span>span><br>可视区高度:<span>span>div>
body>
html>
<script>
$(".show>span").eq(0).text($(window).width());
$(".show>span").eq(1).text($(window).height());
// $(".show>span").eq(0).text($(document).width())
$(window).resize(function(){
var width = $(window).width();
var height = $(window).height();
$(".show>span").eq(0).text(width);
$(".show>span").eq(1).text(height);
});
script>
DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>获取可视区的宽高title>
<style>
html,body{height: 3000px;}
.back{width: 40px;height: 40px;padding: 5px;position: fixed;right: 50px;bottom: 40px;
border: 10px solid black;display: none;background-color: #ccc;}
style>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
head>
<body>
<div class="back"><a href="javascript:void(0);">回到顶部a>div>
body>
html>
<script>
$(window).scroll(function(){
// window没有scrollTop属性,window的pageXOffset和pageYOffset是只读的
if($("html,body").scrollTop()>300){//这里有一个兼容性问题,如果是在ie6,7,8下body是不起作用的
// $(".back").show();
$(".back").fadeIn();
}else{
$(".back").fadeOut();
}
});
$(".back>a").click(function(){
$("html,body").animate({scrollTop:0},500);
});
script>
即创建新的元素时,让新的元素也拥有事件
table创建增加删改事件案例
DOCTYPE html>
<html lang="zh,en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件委托title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
head>
<body>
<input type="button" value="点击创建新角色" id="create">
<br>
<br>
<table id="mytable" border="1" cellpadding='5' cellspacing='0'>
<caption>用户列表caption>
<tr><td>用户名td><td>1td><td>2td><td>3td>
<td>
<input type="button" value="删除此列" id="delete">
td>
tr>
table>
body>
<script>
$("#create").click(function(){
$("用户名 1 2 3 ").appendTo($("#mytable"))
});
$("#mytable").delegate("#delete","click",function(){
$(this).parent().parent().remove();
});
script>
html>
jquery为了让方法更好记忆,从jquery1.7之后,就用on统一了所有事件的注册方法
利用on事件重写上述delegate案例
DOCTYPE html>
<html lang="zh,en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件委托title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
head>
<body>
<input type="button" value="点击创建新角色" id="create">
<br>
<br>
<table id="mytable" border="1" cellpadding='5' cellspacing='0'>
<caption>用户列表caption>
<tr><td>用户名td><td>1td><td>2td><td>3td>
<td>
<input type="button" value="删除此列" id="delete">
td>
tr>
table>
body>
<script>
$("#create").on("click",function(){//用on可以注册简单事件
$("用户名 1 2 3 ").appendTo($("#mytable"))
});
//用on也能注册委托事件
$("#mytable").on("click","#delete",function(){//此时参数位置稍有不同
$(this).parent().parent().remove();
});
script>
html>
DOCTYPE html>
<html lang="zh,en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件委托title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
<style>
div{
width: 500px;
height: 60px;
font-size:30px;
text-align: center;
margin: 200px auto;
display: none;
background-color: aqua;
line-height: 60px;
}
style>
head>
<body>
<div>提示,欢迎至此div>
body>
<script>
$("div").fadeIn(1000).delay(1000).fadeOut(1000);
script>
html>
DOCTYPE html>
<html lang="zh,en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件委托title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">script>
<style>
ul{list-style: none;}
ul>li{float:left;margin-left: 20px;color: orange;font-weight: bolder;font-size: 30px;}
style>
head>
<body>
<ul>
<li>☆li>
<li>☆li>
<li>☆li>
<li>☆li>
<li>☆li>
ul>
body>
<script>
var wk = "☆";
var ws = "★";
$("ul>li").on("mouseenter",function(){
$(this).text(ws).prevAll().text(ws);
$(this).nextAll().text(wk);
}).on("mouseleave",function(){
$(this).text(wk).siblings().text(wk);
$("ul>li.current").text(ws).prevAll().text(ws);
}).on("click",function(){
$(this).addClass("current").siblings().removeClass("current");
})
script>
html>