jQuery是JavaScript的工具库,对原生JavaScript中的DOM操作、事件处理、包括数据处理和Ajax技术等进行封装,提供更完善,更便捷的方法。【对所有浏览器都兼容实现】
先引入jquery文件,才能使用jquery语法
"$()"函数用于获取元素节点,创建元素节点或将原生JavaScript对象转换为jquery对象,返回 jQuery 对象。jQuery 对象实际是一个类数组对象,包含了一系列 jQuery 操作的方法。
例如 :
//$()获取元素节点,需传入字符串的选择器
$("h1")
$("#d1")
$(".c1")
$("body,h1,p")
//选择器的特点,与样式选择器一致
原生JavaScript对象与jQuery对象的属性和方法不能混用。可以根据需要,互相转换 :
<div id="div1" class="d1">
hello world
</div>
<script src="jquery.min.js"></script>
<script>
console.log($('#div1'));//jQuery对象
var div = document.getElementById('#div1');
console.log(div);//DOM对象
//jQuery对象中索引为0的位置保存的是对应的DOM对象
console.log($('#div1')[0]);//jQuery -> DOM
console.log($(div));//DOM -> jQuery
//区别
//DOM 对象 innerHTML innerText setAttribute()..
//jQuery对象没有DOM的方法和属性
// 找元素
// 改内容
// 改样式
// 改属性
// 动画效果
// 页面元素的事件绑定
</script>
jQuery通过选择器获取元素,$(“选择器”)
选择器分类 :
标签选择器:$("div")
ID 选择器:$("#d1")
类选择器:$(".c1")
群组选择器:$("body,p,h1")
后代选择器: $("div .c1")
子代选择器: $("div>span")
相邻兄弟选择器: $("h1+p") 匹配选择器1后的第一个兄弟元素,同时要求兄弟元素满足选择器2
通用兄弟选择器: $("h1~h2") 匹配选择器1后所有满足选择器2的兄弟元素
:first
匹配第一个元素 例:$("p:first")
:last
匹配最后一个元素 例:$("p:last")
:odd
匹配奇数下标对应的元素
:even
匹配偶数下标对应的元素
:eq(index)
匹配指定下标的元素
:lt(index)
匹配下标小于index的元素
:gt(index)
匹配下标大于index的元素
:not(选择器)
否定筛选,除()中选择器外,其他元素
<div id="silder">
<span class="active">1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<div>
<span>d1</span>
<span>d2</span>
</div>
</div>
<script src="jquery.min.js"></script>
<script>
//even偶数下标添加颜色
$('#silder>span:even').css('color','green');
// $('#silder>span:first').css('font-size','30px').css('color','blue');
// $('#silder>span:last').css('font-size','40px');
// 查找索引值为2的span元素
$('#silder>span:eq(2)').css('color','pink');
//比2小的字体为红色
$('#silder>span:lt(2)').css('color','red');
//比2大的字体加粗
$('#silder>span:gt(2)').css('font-weight','bold');
//查找silder下除了span的其他元素,设置字体蓝色加粗
$('#silder:not(#silder>span)').css('color','blue').css('font-weight','bold');
console.log($('#silder>span'))//jQuery对象
// 找到active后面的第一个span 添加字体颜色
// $('.active+span').css ('color','red');
// 找active后面的兄弟元素div添加字体颜色
// $('.active~div').css('color','red');
</script>
html() //设置或读取标签内容,等价于原生innerHTML,可识别标签语法
text() //设置或读取标签内容,等价于innerText,不能识别标签
val() //设置或读取表单元素的值,等价于原生value属性
① . attr(“attrName”,“value”)
设置或读取标签属性
② . prop(“attrName”,“value”)
设置或读取标签属性
注意 :在设置或读取元素属性时,attr()和prop()基本没有区别;但是在读取或设置表单元素(按钮)的选中状态时,必须用prop()方法,attr()不会监听按钮选中状态的改变,只看标签属性checked是否书写
③ . removeAttr(“attrName”)
移除指定属性
<div>
<input id="xieyi" type="checkbox">已同意阅读协议
<a href="#">《协议》</a>
</div>
<button id="btn">提交</button>
<script src="jquery.min.js"></script>
<script>
// 当按钮被点击时 检查复选框是否被用户选中(checked)
// 如果选中 弹框 提交成功
// 否则 弹框 请阅读协议
$("#btn").on('click',function(){
// console.log($('input').attr('checked'))//undefined
// console.log($('input').prop('checked'))//true/false
$('input').prop('checked')?alert('提交成功'):alert('请阅读协议');
})
// $('#xieyi').prop("#xieyi","checked")
</script>
addClass("className") //添加指定的类名
removeClass("className")//移除指定的类型,如果参数省略,表示清空class属性值
toggleClass("className")//结合用户行为,实现动态切换类名.如果当前元素存在指定类名,则移除;不存在则添加
css("属性名","属性值") //设置行内样式
css(JavaScriptON对象) //设置一组CSS样式
/*
JavaScriptON对象:常用数据传输格式
语法 :
{
"width":"200px",
"height":"200px",
"color":"red"
}
*/
<style>
.item{
width: 200px;
height: 200px;
background-color: blue;
}
.active{
background-color: red;
}
</style>
</head>
<body>
<div class="item"></div>
<script src="jquery.min.js"></script>
<script>
//案例1
$('.item').on('click',function(){
// $(this).addClass('active');//添加类 样式比较多的建议用class添加
// $(this).removeClass('item');//删除类
$(this).toggleClass('active');//切换类名
})
//案例2
// $('.item').on('click',function(){
// // $(this).css('background-color','red')//修改元素的style
// $(this).css({
// 'background-color':'red',
// 'width':'300px',
// 'height':'300px'
// })
// })
</script>
var div = $("<div></div>"); //创建元素
div.html("动态创建").attr("id","d1").css("color","red"); //链式调用,设置内容和属性
var h1 = $("<h1 id='d1'>一级标题</h1>"); //创建的同时设置内容,属性和样式
$obj.append(newObj); //在$obj的末尾添加子元素newObj
$obj.prepend(newObj); //作为第一个子元素添加至$obj中
$obj.after(newObj); //在$obj的后面添加兄弟元素
$obj.before(newObj); //在$obj的前面添加兄弟元素
$obj.remove(); //移除$obj
<div>你好</div>
<script src="jquery.min.js"></script>
<script>
//元素的创建
// 方法1:
// var html = '<h1>你好</h1>';
// $('body').html(html)
// 方法2:
// var h1 = $('<h1 id="title" >hello world</h1>');
// console.log(h1);
// $('body').append(h1);
// 方法3:
//直接添加 需要传入字符串形式的页面内容
// $('body').append('<h1 id="title" >hello world</h1>');
//区别
// appen()追加元素 不会修改原有内容
// html()重写内容
//在前面添加兄弟元素
$('div').before('<h1 id="title" >666</h1>');
//创建后删除div
$('div').remove()
</script>
show(speed,callback)/hide(speed,callback)
slideDown(speed,callback)/slideUp(speed,callback)
fadeOut(speed,callback)/fadeIn(speed,callback)
animate(styles,speed,callback)
<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>动画效果</title>
</head>
<body>
<div id="img">
<img src="gm1-6.jpg" alt="">
</div>
<div>
<button class="btn1">隐藏</button>
<button class="btn2">上推</button>
<button class="btn3">淡隐</button>
</div>
<script src="jquery.min.js"></script>
<script>
// 休息11:10~11:25
// 练习上推下拉(对块元素生效) 淡隐淡现效果
$('.btn3').on('click',function(){
if($(this).html() == '淡隐'){
$('#img').fadeOut(3000,function(){
// hide执行完成后调用
$('.btn3').html('淡现');
});
}else{
$('#img').fadeIn(3000,function(){
$('.btn3').html('淡隐');
});
}
})
$('.btn2').on('click',function(){
if($(this).html() == '上推'){
$('#img').slideUp(3000,function(){
// hide执行完成后调用
$('.btn2').html('下拉');
});
}else{
$('#img').slideDown(3000,function(){
$('.btn2').html('上推');
});
}
})
// 点击隐藏按钮 将图片隐藏 xxx.hide()
$('.btn1').on('click',function(){
if($(this).html() == '隐藏'){
$('img').hide(3000,function(){
// hide执行完成后调用
$('.btn1').html('显示');
});
}else{
$('img').show(3000,function(){
$('.btn1').html('隐藏');
});
}
})
// 图片隐藏之后 将按钮上的文字改为显示
// 点击显示按钮 将图片显示 然后将文字变为隐藏
</script>
<head>
<style>
#ball{
width: 100px;
height: 100px;
background-color: orange;
border-radius: 50%;
position: absolute;
}
</style>
</head>
<body>
<div id="ball">
</div>
<script src="jquery.min.js"></script>
<script>
// //小球来回移动
// $('#ball').animate(
// {'margin-left':'300px'},//样式
// 2000,//时间
// function(){
// $('#ball').animate(
// {'margin-left':'0'},//样式
// 2000,//时间
// )
// }
// )
//小球来回移动后隐藏
// $('#ball').animate(
// {'margin-left':'300px'},//样式
// 2000,//时间
// ).animate(
// {'margin-left':'0'},
// 2000,
// function(){
// //animate执行完成后调用
// $(this).fadeOut(2000)
// }
// )
//小球围边框绕一圈
$('#ball').animate(
{'right':'0'},2000
).animate(
{'bottom':'0'},2000
).animate(
{'left':'0'},2000
).animate(
{'top':'0'},2000,function(){
$('#ball').slideUp(2000)
}
)
</script>
$(selector).each(function(index,element){})
必需。为每个匹配元素规定运行的函数。
$.each(Object, function(index, data){});
必需。为每个匹配元素规定运行的函数。
//语法一
$(document).ready(function (){
//文档加载完毕后执行
})
//语法二
$().ready(function (){
//文档加载完毕后执行
})
//语法三
$(function(){
//文档加载完毕后执行
})
区别:
原生onload事件不能重复书写,会产生覆盖问题;jquery中对事件做了优化,可以重复书写ready方法,依次执行
//on("事件名称",function)
$("div").on("click",function(){});//新版本使用的多些
//bind("事件名称",function)
$("div").bind("click",function(){});//1.6-1.8间的版本
//事件名作为方法名
$("div").click(function(){});
<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>事件绑定</title>
</head>
<body>
<div id="parent">
<span>hhhhhhh</span>
</div>
<button>添加p元素</button>
<script src="jquery.min.js"></script>
<script>
$(function(){
$('button').click(function(){
$('#parent').append('<p>我是新建的p元素</p>');
})
//on委托事件
//$(selector).on('事件名','执行事件的元素(后代)',function(){})
//selector祖先元素 监听事件的执行,如果是指定执行事件的元素才帮
$('parent').on('click','p',function(){
console.log($(this).html())
})
// $('p').click(function(){
// console.log($(this).html())
// })
})
</script>
<style>
div{
width: 200px;
height: 200px;
background-color: blue;
}
.active{
background-color: red;
}
</style>
<script src="jquery.min.js"></script>
<body>
<div></div>
<script>
// 鼠标移入div变红色,鼠标移除div变蓝色
// $(function(){
// $('div').mouseover(function(){
// $(this).addClass('active');
// })
// $('div').mouseout(function(){
// $(this).removeClass('active');
// })
// })
// 升级版
//一个on函数绑定多个事件
//toggleClass有就删除没有就添加
$(function(){
$('div').on('mouseover mouseout',function(){
$(this).toggleClass('active');
})
})
</script>
<title>操作元素内容</title>
</head>
<body>
<input type="text" id="text" placeholder="输入内容在下方显示">
<h1></h1>
<script src="jquery.min.js"></script>
<script>
//当用户在input写内容时,将内容在下方的h1中显示
//oninput 当在文本框输入内容时触发
//xxx.oninput = function(){}
$('#text').on('input',function(){
//文本框的值 同步输出框内值
//this是DOM对象 如果在jQuery中需要$(this)
$('h1').html($(this).val());
// var value = $('#text').val();
// $('h1').html(value);
})
</script>
<input type="text" id="text" placeholder="输入内容在下方显示">
<h1></h1>
<script src="jquery.min.js"></script>
<script>
//当用户在input写内容时,将内容在下方的h1中显示
//onchange当文本框的值发生改变触发 val等价于value html等价于innerHTML
//当输入框完成输入后,鼠标点击其他地方就会取出输入值
$('#text').on('change',function(){
$('h1').html($(this).val());
})
</script>