jquery

概述
jquery是一个前端的js库,它兼容性好(处理了兼容),它的语法简洁。它是链式调用的语言。以面向
对象封装的以返回一个jquery对象为核心来实现对应的链式调用。它集成了对应的animated.js (底层实
现基于css3动画),它的动画库很强大。它的可扩展性强,它可以利用对应的方法来扩展插件。
官方地址
jquery外网地址
jquery中文网
jQuery的入门
核心对象 jquery 也可以省略为 $ (别名)
链式调用的基础是基于所有的方法返回的都是一个jquery对象
入门
引入jquery文件

<script src="./jquery.min.js"></script>

使用jquery

//$和对应jQuery都是一个方法 调用会返回一个jquery对象
console.log($());
console.log(jQuery());
//获取元素 querySeleter querySeleterAll(类似于)
console.log($('div'));
//JQuery对象要变成DOM对象可以通过下标去转换
console.log($('div')[0]);
//DOM要转为JQuery对象 $() 包起来你需要转换的dom对象
console.log($($('div')[0]));

jQuery的选择器
eq 获取对应的下标的元素 odd获取下标为奇数的元素 even获取下标为偶数的元素 first 获取第一个元素  last获取最后一个

console.log($('li:eq(0)')); //表示获取第一个li eq获取从下标0开始
console.log($('li:odd')); //下标奇数的所有li
console.log($('li:even')); //下标偶数的所有li
console.log($('li:last')); //获取最后一个li
console.log($('li:first')); //获取第一个li

jQuery的筛选器
eq 筛选对应的下标的元素 first筛选第一个 last筛选最后一个
next 筛选下一个 nextAll 筛选下面的所有 prev 筛选上一个 prevAll 筛选上面的所有
children 筛选子元素 parent 筛选父元素 siblings 筛选兄弟元素
find 查找元素

//筛选器用于筛选获取的元素的 所有的筛选器都可以传参 除了eq其他传入的参数都是选择器
//它会找到对应的匹配的选择器的元素
console.log('筛选器');
console.log($('li').eq(0)); //获取下标为0的
console.log($('li').first()); //获取第一个
console.log($('li').last()); //获取最后一个
console.log($('li').eq(0).next()); //获取下标为0的下一个
console.log($('li').eq(1).prev()); //获取下标为1的上一个
console.log($('li').eq(2).nextAll()); //获取下标为2的下面的所有同辈元素
console.log($('li').eq(2).prevAll()); //获取下标为2的上面的所有同辈元素
console.log($('li:eq(0)').children()); //获取下标为0的li的所有的子元素
console.log($('li:eq(0)').parent()); //获取下标为0的li的父元素
console.log($('li:eq(0)').siblings()); //获取所有的兄弟元素
console.log($('li').find('a')); //在li里面查找对应的a标签

jQuery的属性操作
对于dom的属性操作
prop (它只能对于自带的属性才能修改 其他如果不是本身自带不会显示的 不是prop设置也不是本身自带的它是拿不到的)

//prop给div设置一个id 叫box
//传递俩个参数就是设置
$('div').prop('id','box')
$('div').prop('name','box') //对于本身没有的属性 不能显式设置
//传递一个参数就获取
console.log($('div').prop('name'));
console.log($('div').prop('class')); //对于本身自带 不是prop设置可以获取对应的值
console.log($('div').prop('username')); //本身没有的 也不是prop设置 获取不到的
//删除prop
$('div').removeProp('id')
$('div').removeProp('name')
console.log($('div').prop('id')); //不能删除本身自带 只能删除它设置的属性
console.log($('div').prop('name'));

attr (原生getAttribute setAttribute removeAttribute)

//attr是对于所有的显示的属性都可以进行操作
$('div').attr('class','hello') //本身带的
$('div').attr('hello','您好') //本身没带的
console.log($('div').attr('class'));//获取class属性名
console.log($('div').attr('id'));//获取id属性名
console.log($('div').prop('hello'));
$('div').removeAttr('id')
$('div').removeAttr('username')

class属性的增删改查的方法

//对于class属性的增删改查
// addClass 添加class
$('div').addClass('world')
// removeClass
$('div').removeClass('hello')
// hasClass
console.log($('div').hasClass('world'));
// toggleClass 有变没有 没有变有
$('div').toggleClass('hello')

属性显示相关的方法 html(innerHTML) text (innerText) val (value)

//里面无参就是取值 有参就是赋值
$('div').html('<b>你好</b>')
$('div').text('文本')
$('input').val('你好')
console.log( $('div').html());
console.log( $('div').text());
console.log( $('input').val());

jQuery的样式操作
对于dom的样式操作 css方法

console.log($('div'));
//css方法 基于style实现 设置操作 传递俩个参数是设置
$('div').css('backgroundColor','red')
//获取操作 传递一个参数是获取 getComputedStyle实现
console.log($('div').css('backgroundColor'));
console.log(document.querySelector('div').style.backgroundColor);
console.log(window.getComputedStyle(document.querySelector('div'),null)
['backgroundColor']);

JQuery的dom操作

//创建元素
let $div = $('<div>我是添加的div</div>')
console.log($div);
//添加元素
// 父子添加
// $('#box').add($div)
//原生实现 appendChild 追加到最后
$('#box').append($div) //添加子元素 在box里面添加div
$div.appendTo( $('#box')) //添加子元素 将div添加到box里面
$('#box').prepend($('<a>我是a</a>')) //插入之前 在box里面的开始位置插入a
$('<a>我是a</a>').prependTo($('#box')) //将a标签插入到box里面的开始位置
// 兄弟添加
$('<b>我是你后面的兄弟<b>').insertAfter($('#box')) //将b标签插入到box的后面
$('<b>我是你前面的兄弟<b>') .insertBefore($('#box')) //将b标签插入到box的前面
$('#box').after($('<h3>我是after添加元素</h3>')) //在box后面添加h3
$('#box').before($('<h3>我是before添加元素</h3>')) //在box前面添加h3
//删除
// remove 删除所有包括自己 传入对应的选择器 表示删除这个匹配的
// $('#box').remove()
// 清空
// $('#box').empty()
//克隆 clone 是否克隆所有的事件 是否深度
console.log($('#box').clone(true,true)[0]);
//替换 replace
// $('<b>我是b标签</b>').replaceAll($('#box')) //将前面的内容替换后面的内容
$('#box').replaceWith($('<b>我是b标签</b>')) //用后面的内容替换前面的内容

元素的位置以及尺寸获取
尺寸

console.log($('div').innerHeight()); //包含padding 不包含border
console.log($('div').innerWidth());
console.log($('div').outerHeight()); //包含padding 包含border
console.log($('div').outerWidth());
console.log($('div').width()); //直接读width和height 样式读取
console.log($('div').height());

位置

//获取位置 offset position 返回是一个对象 left 和 top
console.log($('span').offset()); //基于页面的
console.log($('span').position()); //基于父元素 offsetParent

事件处理
jquery实现了观察者模式(off方法 on方法)

$('button').on('click',function(){
console.log('你好');
})
$('button').on('click',function(){
console.log('你好11');
})
let handler = function(){
console.log('你好世界');
}
$('button').on('click',handler)
//取消所有的这个事件所有的处理函数
// $('button').off('click')
//取消click事件的对应的处理函数
$('button').off('click',handler)
//one 执行一次
$('div').one('click',handler)

on 监听事件 off 取消事件 one 执行一次
jquery对于常用的事件都做了相关的方法 方法名就是对应的事件名

$('button').click(()=>{
console.log(`点击了`);
})
$('button').mouseenter(()=>{
console.log(`移入`);
})
$('button').mouseleave(()=>{
console.log(`移出`);
})
//封装了hover函数来处理移进移出
$('button').hover(()=>{
console.log('hover移进了' );
},()=>{
console.log('hover移出了' );
})
$('div').mouseenter(()=>{
console.log(`移入`);
})
$('div').mouseleave(()=>{
console.log(`移出`);
})
//封装了hover函数来处理移进移出 内部采用的是mouseover mouseout
$('div').hover(()=>{
console.log('hover移进了' );
},()=>{
console.log('hover移出了' );
})

事件委托(event.target)(jquery实现事件委托)

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script src="./jquery.min.js"></script>
<script>
$('ul').click((e)=>{
e = e || event
if(e.target.nodeName == 'LI'){
//排他 获取当前点击的是谁 e.target 是dom对象
$(e.target).siblings().css('backgroundColor','')
$(e.target).css('backgroundColor','red')
}
})
</script>

jquery的动画
animate 方法 (里面的参数只能是数值类型)

//改变的对象 执行的时间 回调函数
// $('div').animate({
// left:500,
// top:100
// },2000,function(){
// $('div').animate({
//
left:0,
//
top:0
// },2000,function(){
//
console.log('完成了');
// })
// })
// $('div').animate({
// backgroundColor:'blue' //只支持数值类型 不支持
// },2000)
$('div').animate({
width:500,
height:200,
opacity:0.5
},2000)

hide show 显示和隐藏的动画 toggle切换

//传时间 回调函数 同时变化宽高和透明度
$('div').hide(2000,()=>{
$('div').show(2000)
})
$('div').toggle(2000) //如果显示就隐藏 hide 隐藏就显示show

slideUp slideDown slideToggle

//只改高度
$('div').slideUp(2000,function(){
$('div').slideDown(2000)
})
$('div').slideToggle(2000) //如果你是隐藏就显示 如果显示就隐藏

jquery的ajax
对应xmlhttprequest进行了封装 支持put和delete请求
get 发送get请求

$('button:eq(0)').click(()=>{
$.get('https://jsonplaceholder.typicode.com/todos',{
_
limit:'10'
},function(res){
console.log(res);
})
})

post方法发送post请求

$('button:eq(1)').click(()=>{
$.post('http://useker.cn/login',{
uname:
'
aaa
'
,
upwd:'123456'
},function(res){
console.log(res);
})
})

ajax发送任意请求

$.ajax({
url:'https://jsonplaceholder.typicode.com/todos',
method:"get", //请求方式
data:{_limit:20}, //数据
dataType:'json', //请求的数据类型
success(res){//成功
console.log(res);
},
error(err){ //失败
console.log(err);
},
complete(){ //完成
console.log('完成');
},
})

钩子函数 (生命周期函数 ajax的生命周期)

 

 

 

多库共存
我有一个js库 你也有一个js库 jquery也是一个js库 ,我这个js库的核心对象$ 你哪个js库的核心对象
Jquery ,这个俩个内容在对应jquery都存在,那么就会导致jquery无法使用 或者你的js库无法使用。
jquery提供了对应的方法来改变对应的核心对象名
$ jquery

let aa = $.noConflict(true) //默认只会移除$ 如果你填写为true Jquery也会被移出
console.log(aa);
console.log(aa('div'));
console.log($)
console.log(jQuery)

插件扩展(扩展jquery的相关方法)
extend 关键词
对于的对象进行扩展(静态扩展) 对于方法进行扩展(方法扩展)

$.extend({
eat(){
console.log('你好');
}
})
$.eat() //调用
//方法扩展
$.fn.extend({
sayHello(){
console.log(arguments);
console.log('hello');
console.log(this);
}
})
$('body').sayHello()
posted @ 2022-09-14 22:36  B1NGO  阅读(22)  评论(0编辑  收藏  举报