jQuery
1.简介
jQuery是一个封装的库,也可以成为一个框架,将js中复杂的方法进行封装改良,让开发人员更加专注于逻辑开发。
jQuery使用时必须进行引入:
- 引入本地js文件
- CDN加载(引入在线的网址,网址上具有框架)https://www.jq22.com/cdn/
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
jQuery特点:不用考虑兼容问题,已经被封装好了,但是仅封装了DOM的操作
文档:https://jquery.cuishifeng.cn/index.html
2.选择器
2.1基本筛选
$('#box').css('color','green')
$('ul li:first').css('color','red')
$('ul li:last').css('color','red')
//小于指定下标 lt(index) index从0开始
$('ul li:lt(3)').css('border','1px solid blue')
//大于
$('ul li:gt(4)').css('border','1px solid green')
//even匹配所有的偶数行,从0开始
$('ul li:even').css('background','pink')
//匹配基数行,从0开始
$('ul li:odd').css('background','orange')
//eq(index) 找到指定的某一个元素
$('ul li:eq(2)').css('background','red')
//$('ul li:not(2)').css('background','yellow')
//选择所有的标题标签 :header
2.2属性选择器
$('input[type="text"]').css('border','1px solid red')
$('input[name!="hu"]').css('border','1px solid purple')
//匹配以..开头的
$('input[name^="hu"]').css('border','1px solid green')
//匹配以..结尾的
$('input[name$="ao"]').css('border','3px solid black')
//包含
$('input[name*="u"]').css('border','3px solid skyblue')
3.属性
attr()
removeAttr()
prop()
addClass()
removeClass()
toggleClass()
html()
text()
val()
3.1属性
.active{
color: gold;
}
.active2{
background-color: #008000;
}
<p name='txt' >不动鸣神泡影断灭</p>
//attr()获取,设置,修改属性
console.log($('p').attr('name'))//txt
$('p').attr('class','active')
$('p').attr('name','cents')
console.log($('p').attr('name'))//cents
// removeAttr()移除
// setTimeout(function(){
// $('p').removeAttr('class')
// },1000)
//prop匹配第一个
//console.log($('p').prop('class'))
console.log($('p').prop({class:'active2'}))
//移除不了
setTimeout(function(){
$('p').removeProp('class','active2')
},1000)
3.2css类
color: greenyellow;
}
p.active{
color: gold;
}
<button type="button">点击切换</button>
<p>不动鸣神泡影断灭</p>
$('button').click(function(){
console.log($('p').hasClass('active'))
//var res=$('p').hasClass('active')
// if(res){
// $('p').removeClass('active')
// }
// else{
// $('p').addClass('active')
// }
//上述代码和下面代码一样
$('p').toggleClass('active')
3.3html
<div>
<p>不动鸣神泡影断灭</p>
</div>
//html() 相当于 innerHTML
var txt=$('div').html()
console.log(txt)//<p>不动鸣神泡影断灭</p>
var txt=$('div').text()
console.log(txt)//不动鸣神泡影断灭
var txt=$('div').text('胡桃胡桃')
//val()获取输入框和文本框的值
//原生js
// var input=document.querySelector('input')
// input.οnblur=function(){
// console.log(input.value)
// }
//jq
$('input').blur(function(){
console.log($('input').val())
})
4.CSS
css()
offset()
position()
scrollTop()
scrollLeft()
width()
height()
...
4.1css
xx.css('color','red') or xx.css({color:'red',width:100+'px'})
4.2位置
//offset()获取相对于视口的偏移,返回一个对象
console.log($('div').offset())//{top: 50, left: 108}
//position()相对父元素的偏移,要写定位
console.log($('.box').position())//{top: 50, left: 108}
console.log($('.box2').position())//{top: 50, left: 108}
$(document).scroll(function(){
var val=$(document).scrollTop()
console.log(val)
var val=$(document).scrollLeft()
console.log(val)
})
4.3尺寸
console.log($('div').width())
console.log($('div').height())
5.筛选
<ul>
<li>1111111111</li>
<li>1111111111</li>
<li>1111111111</li>
<li>1111111111</li>
</ul>
//end回到上一个破坏性操作
$('ul li').first().css({background:'red'}).end().last().css({background:'green'})
$('ul li').first().css({color:'gold'}).parent().find('li').last().css({color:'blue'})
6.效果
1基本
show()
hide()
toggle()
.box{
width: 200px;
height: 200px;
background: orange;
}
<button type="button">show</button>
<button type="button">hide</button>
<button type="button">toggle</button>
<div class="box"></div>
$(function(){
//显示
$('button').eq(0).click(function(){
$('.box').show()
})
//隐藏
$('button').eq(1).click(function(){
$('.box').hide()
})
//切换
$('button').eq(2).click(function(){
/*
参数:
speed:slow normal fast
$('.box').toggle('slow')
$('.box').toggle('1000')
$('.box').toggle('1000',function(){
console.log('动画完成')
})
*/
$('.box').toggle('1000',function(){
console.log('动画完成')
})
})
})
效果演示:
2滑动
slideDown():高度增加【!】
slideUp():高度收缩
slideToggle():切换
.box{
width: 200px;
height: 200px;
background: orange;
}
<button type="button">sildeDown</button>
<button type="button">slideUp</button>
<button type="button">toggle</button>
<div class="box"></div>
$(function(){
//显示
$('button').eq(0).click(function(){
$('.box').slideDown()
})
//隐藏
$('button').eq(1).click(function(){
$('.box').slideUp()
})
//切换
$('button').eq(2).click(function(){
/*
参数:
speed:slow normal fast
$('.box').slideToggle('slow')
$('.box').slideToggle('1000')
$('.box').slideToggle('1000',function(){
console.log('动画完成')
})
*/
$('.box').slideToggle('1000',function(){
console.log('动画完成')
})
})
})
3淡入淡出
fadeIn()
fadeOut()
fadeTo()
fadeToggle()
.box{
width: 200px;
height: 200px;
background: orange;
}
<button type="button">fadeIn</button>
<button type="button">fadeOut</button>
<button type="button">fadeTo</button>
<button type="button">fadeToggle</button>
<div class="box"></div>
$(function(){
//淡入
$('button').eq(0).click(function(){
$('.box').fadeIn()
})
//淡出
$('button').eq(1).click(function(){
$('.box').fadeOut()
})
//调整不透明度,参数opacity
$('button').eq(2).click(function(){
$('.box').fadeTo('1000',0.1,function(){
console.log('动画完成')
})
})//切换
$('button').eq(3).click(function(){
$('.box').fadeToggle('1000',function(){
console.log('动画完成')
})
})
})
4自义定
animate()
stop()
delay()
finish()
animate()
.box{
width: 200px;
height: 200px;
background: orange;
position: absolute;
left: 0;
top: 30px;
}
<button type="button">开始动画</button>
<button type="button">结束</button>
<button type="button">finish</button>
<div class="box"></div>
$(function(){
$('button').eq(0).click(function(){
//animate(params,speed,)
// $('.box').animate({opacity:'0.5',borderRadius:'50%',left:'300px'},1000)
// $('.box').animate({opacity:'0.5',borderRadius:'50%'},1000).animate({left:'300px'},500)
//设置延迟
$('.box').animate({opacity:'0.5',borderRadius:'50%'},1000).delay(1000).animate({left:'300px'},500)
})
效果演示:
stop()
- stop() == stop(false,false) 停止当前正在执行的动画,立即执行下一个动画
- stop(false,true) 立即完成当前动画,并立即执行下一个动画
- stop(true) == stop(true,false) 立即停止当前动画,取消下一个动画
- stop(true,true) 立即完成当前动画,取消下一个动画
第一个参数为false:则为立即执行下一个动画,true则为立即取消下一个动画
第二个参数为false:则为立即结束当前正在执行的动画,true则为立即完成当前执行的动画
$('button').eq(1).click(function(){
// $('.box').stop()
$('.box').stop(false,true)//立即完成当前动画,并立即执行下一个动画
// $('.box').stop(true,true)
})
效果演示:
finish()
清空所有动画,直接到完成后的动画位置
$('button').eq(2).click(function(){
$('.box').finish()//清空所有动画,直接到完成后的动画位置
})
7.文档处理
7.1内部插入
append()
appendTo()
prenpend()
prependTo()
<div><h1>attention</h1></div>
<ul></ul>
<li>韶光抚月,天下人间</li>
<li>韶光抚月,天下人间</li>
<li>韶光抚月,天下人间</li>
<li>韶光抚月,天下人间</li>
<li>韶光抚月,天下人间</li>
//append()在内部后面追加内容
$('ul li').append(',2.1前瞻今晚九点直播')
//appendTo(将所有匹配到的元素追加到指定的集合中)
$('li').appendTo($('ul'))
//prepend()在内部内容的前面追加
$('li').prepend('原神--')
//prependTo()所有匹配到的元素前置到指定集合中
$('li').prependTo($('div'))
7.2外部插入
after()
before()
insertAfter()
insertBefore()
<div><h1>重大消息</h1></div>
<ul>
<li>223233231131321</li>
<li>223233231131321</li>
<li>223233231131321</li>
<li>223233231131321</li>
</ul>
$('ul li').after('<input/>')
$('ul li').before('<input/>')
$('ul').insertAfter('div')
$('ul').insertBefore('div')
7.3包裹
wrap()
unwrap()
wrapAll()
wrapInner()
<li>123135656</li>
<li>123135656</li>
<li>123135656</li>
<li>123135656</li>
//wrap()给每个都包裹上
$('li').wrap('<ul></ul>')
//unwrap()脱掉
$('li').unwrap()
//匹配到的统一加上
$('li').wrapAll('<ul></ul>')
//给内部添加
$('li').wrapInner('<a></a>')
7.4替换
replaceWith()
replaceAll()
<p>31213</p>
<p>31213</p>
<p>31213</p>
$('p').replaceWith('<h2>3333333</h2>')
$('<h3>9999999</h3>').replaceAll('h2')
7.4删除和克隆
empty()
remove()
detach()
clone()
<p>31213</p>
<p>31213</p>
<p>31213</p>
<div>clone</div>
//清空匹配的元素内的内容
//$('p').empty()
//移除匹配的元素
//$('p').remove()
//从DOM中删除所有匹配的元素
$('p').detach()
$('div').clone().appendTo('body')
8.事件
on()
off()
hover()
<button type="button">btn</button>
<p>胡桃</p>
//on()绑定一个或多个事件
$('button').on('click mouseover',lis1)
function lis1(){
console.log(111)
}
//off取消事件
setTimeout(function(){
$('button').off('mouseover',lis1)
},2000)
$('p').hover(
//移入
function(){
$('p').css({color:'gold'})
},
//移出
function(){
$('p').css({color:'black'})
})
9.核心
//each()
$('ul li').each(function(index,value){
console.log(index,value)
})
//length()获取长度
console.log($('ul li').length)
//get()获取指定下标的元素,返回DOM元素
$('ul li').eq(0).css({color:'gold'})
//jQuery对象转换为js的DOM对象
$('ul li').get(1).style.color="red"
//js的DOM对象转换为jQuery对象
var li=document.querySelectorAll('ul li')
var $li=$('li').eq(2)
$li.css({color:'blue'})
10.补充
//css()获取或者设置css样式
console.log($('div').css('width'))//300px
//设置css ,单个样式
$('div').css('width','200px').css('background','lightblue')
//同时设置多个css样式
$('div').css({height:'200px',background:'orange',borderRadius:'50%'})
//链式操作 ,方便切换对象
$('ul li').css({width:'300px',background:'#ccc',margin:'1px 0px'}).first().css('color','red')
$('ul li').eq(2).css({background:'pink'})
//判断是否具有某个属性,返回一个布尔值
var res =$('ul li').hasClass('active')
console.log(res)
//is适用性更强
var res =$('ul li').is('.active')
console.log(res)
//map遍历
$('ul li').map(function(){
var value=$(this).html()
console.log(value)
})
//循环点击事件
$('ul li').click(function(){
console.log($(this).html())
})
//children()查找指定的子元素
$('div').children('p').css('color','red')
//find()查找到指定元素,包含关系
$('div').find('p').css('color','purple')
//next()相当于 nextSibling
// $('ul li:first').next().css('color','red')
// $('ul li:first').nextUntil('.active').css('color','pink')
$('ul li:last').prev().css('color','red')
$('ul li:last').prevUntil('.active2').css('color','pink')
//siblings()查找所有的兄弟
$('ul li.active').siblings().css({border:'2px solid orange'})