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()
 

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

 

版权声明:本文为jxooooolxe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jxooooolxe/p/16640578.html