jQuery学习-01

 

0x00 入口函数

      入口函数是等dom元素加载完毕后再执行函数内的代码

$(function (){
    $('.box').hide();
})

0x01 顶级对象

    $就是jquery的顶级对象,$=jquey;像0x00的例子一样,就是将.box这个对象包装成了jquey对象,所以可以调用jquey方法。

    jquery对象就只能使用jquery方法,而DOM对象就只能使用原生js方法。

    jquery对象转换为dom对象的方法:

$('.box')[index] //这里只有一个.box所以index=0
$('.box').get(index) //同上

0x02 jq的选择器

    基本上与css的选择器一致,不同的是多了一些筛选器和方法

    

    

    一个显示下拉菜单的方法

$('.box-li').mouseenter(function (){
    $(this).children('ul').show();
})
$('.box-li').mouseleave(function (){
    $(this).children('ul').hide();
})

0x03 jq的效果

//show就是将隐藏的元素展示出来
$('button').eq(0).click(function (){
    $('.box-li').show(1000,function (){
        alert(1);
    });
})
// hide就是将元素隐藏起来
$('button').eq(1).click(function (){
    $('.box-li').hide(1000,function (){
        alert(2);
    });
})
// toggle即让元素在隐藏和展示之间切换
$('button').eq(2).click(function (){
    $('.box-li').toggle(1000,function (){
        alert(3);
    });
})

    上滑下滑效果 

// 下滑
$('button').eq(0).click(function (){
    $('.box-li').eq(0).find('.ul').slideDown(1000);
})
// 上滑
$('button').eq(1).click(function (){
    $('.box-li').eq(0).find('.ul').slideUp(1000);
})
// 在下滑和上滑之间切换
$('button').eq(2).click(function (){
    $('.box-li').eq(0).find('.ul').slideToggle(1000);
})

    当快速触发动画时,会出现动画延迟触发的问题,这时候可以用stop来解决这个问题

// 注意stop要在动画效果前面
$('.box-li').hover(function (){
    $('.ul').eq(0).stop().slideToggle(500);
})

    淡入淡出效果

// fadeIn即让元素淡入
$('button').eq(0).click(function (){
    $('.ul').eq(0).fadeIn(1000,function (){
    });
})
// fadeOut即让元素淡出
$('button').eq(1).click(function (){
    $('.ul').eq(0).fadeOut(1000,function (){
    });
})
// fadeToggle即让元素在淡入和淡出中切换
$('button').eq(2).click(function (){
    $('.ul').eq(0).fadeToggle(1000);
})
// fadeToggle即改变透明度,第一个参数为速度,第二个参数为要改变的透明度
$('button').eq(2).click(function (){
    $('.ul').eq(0).fadeTo(1000,0.5);
})

    animate动画,有四个参数

    

   0x04 获取元素的属性

    prop()即获取或者修改元素的固有属性

    attr()可以获取或者修改元素的自定义属性

    html()获取元素内容,相当于innerHtml,不带参数就是获取,带参数就是设置元素的内容

    text()就是获取元素的文本内容,相当于innerText,不带参就是获取,带参就是设置元素的内容

    val()用来获取表单元素的内容

    parents('选择器')可以获取指定的父元素

    toFixed()可以指定保留多少位小数

0x05 jq的遍历

     注意获取的domElm是dom元素

$('.box').children('p').each(function (i,domElm){
    $(domElm).css('color','aqua');
})

    可以遍历任何对象的遍历

$.each($('.box'),function (i,domElm){
    $(domElm).css('color','aqua');
})

0x06 元素的操作

    内部添加

let elm = $('<p>新添加的元素</p>');
let elm2 = $('<p>新添加的元素</p>');
// 注意,内部添加一个元素只能被添加一次
// 在尾部添加元素
$('.box').append(elm);
// 在首部添加元素
$('.box').prepend(elm);

    外部添加

let elm = $('<p>新添加的元素1</p>');
let elm2 = $('<p>新添加的元素2</p>');
// 注意,一个元素只能被添加一次
// 在尾部添加元素
$('.box').after(elm);
// 在首部添加元素
$('.box').before(elm2);

    删除元素

    remove()删除选中的元素

    empty()清除选中元素的子元素

0x07 jq的事件处理

    单个事件注册

    $('li').click(function () {
        alert('1');
    })

    多个事件注册

    $('li').on({
        mouseenter: function () {
            alert('1');
        },
        mouseleave: function () {
            alert('2');
        }
    })

     事件委派,事件绑定在了父元素(ul)身上,委派给了所有的子元素(li)

    $('ul').on('click','li',function () {
        alert('3');
    })

    on事件可以给未创建的动态元素绑定事件;

    事件解绑

$('.btn').on('click',function () {
    let li = $('<li></li>');
    li.html($('.txt').val() + "<span>删除</span>");
    $('.box').append(li);
    $('.txt').empty();
    $(li).children('span').on('click', function () {
        li.remove();
    })
    li.slideDown(500);
})
$('.btn').off('click'); // 若不输入参数则为删除所有的事件

    一次性触发事件one

$('.btn').one('click',function () {
    alert('1');
})

     自动触发事件

$('.btn').on('click',function () {
    alert('1');
})
$('.btn').click();
$('.btn').trigger('click');
// 与上面的trigger函数最大的不同在于triggerHandler不触发元素的默认行为
$('.btn').triggerHandler('click');

     事件对象

$('.btn').on('click',function (e) {
    // 阻止默认行为
    e.preventDefault();
    // 阻止冒泡
    e.stopPropagation();
    console.log('1');
})
$(document).on('click',function () {
    console.log('document');
})

    对象拷贝

let obj = {
    name: 'Joker',
    age: '18',
    grade: {
        math: '80',
        english: '90'
    }
}
let obj2 = {}
let obj3 = {
    grade: {
        english: '60'
    }
}
//extend第一个参数是可选的,默认为浅拷贝,当遇到复杂数据类型时会将复杂数据类型的地址拷贝给target元素
$.extend(obj2,obj);
console.log(obj2);
obj.grade.english = '100';
//若第一个参数为true,则为深拷贝,会把里面的数据完全复制一份给target元素,遇到冲突的会合并数据
$.extend(true,obj3,obj);

0x08 jq插件

    当多库并存时,可以更改$符防止冲突

 let everything = $.noConflict();

    懒加载-easyLazyload.js

    全屏加载-fullPage.js

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值