JQuery的属性操作及事件

一、属性操作

1、固有属性

(1)获取:选中元素.prop('属性名')

console.log($('img').prop('src'));

(2)设置:选中元素.prop('属性名','值')

<body>
<img src="https://p1.music.126.net/c-LMZbZbQLcMobnFciAl7w==/109951167683507100.jpg?imageView&quality=89" alt="">
<button>修改</button>
<script>
    $('button').click(function(){
        $('img').prop('src','https://p1.music.126.net/wb1Gd2C7DknUivCqdFaKeQ==/109951167683687375.jpg?imageView&quality=89')
        console.log($('img').prop('src'));
    })
</script>
</body>

2、自定义属性attr()

(1)获取:选中元素.attr('属性名')

console.log($('img').attr('index'));

(2)设置:选中元素.attr('属性名','值')

<body>
<img src="https://p1.music.126.net/c-LMZbZbQLcMobnFciAl7w==/109951167683507100.jpg?imageView&quality=89" alt="">
<button>修改</button>
<script>
    $('button').click(function(){
        $('img').attr('index',1)
        console.log($('img').attr('index'));
    })
</script>
</body>

3、数据缓存data():该方法在指定元素上存取数据,不会改变dom元素结构。页面刷新后,之前存储就会消失

(1)获取:选中元素.data('属性名')

$('img').data('a',5)

(2)设置:选中元素.data('属性名','值')

<body>
<img src="https://p1.music.126.net/c-LMZbZbQLcMobnFciAl7w==/109951167683507100.jpg?imageView&quality=89" alt="">
<button>修改</button>
<script>
    $('button').click(function(){
        $('img').data('a',5)
        console.log($('img').data('a'));
    })
</script>
</body>

(3)区别

①data():在元素本身是看不到设置的属性(不会更改DOM结构),但是该属性是存在的,且可以获取输出

②attr():在元素本身是可以看到设置的属性,也可以获取输出

二、遍历操作

1、区别

(1)隐式迭代:给同一类元素做同样的操作

(2)遍历操作:给同一类元素做不同的事情

2、遍历元素

(1)each(fuction(index,domEle))

index:下标

domEle:Dom元素【注意:不是jq元素,用jq方法的话,需要单独封装】

<body>
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<script>
    var colorArr = ['red','green','blue']
    $('li').each(function(index,dom){//一定要注意记得传参
        console.log(index,dom);
        $(dom).css('background',colorArr[index])
    })
</script>
</body>

(2)$.each(object,function(index,element){})

index:下标

element:循环出来数据

<body>
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<script>
    var colorArr = ['red','green','blue']
    $.each(colorArr,function(index,item){
        console.log(index,item);
    })
</script>
</body>

3、创建/添加/删除元素

(1)创建:$('<标签></标签>')

var newli = $('<li>4</li>')

(2)添加

①内部:

        前:选到对应位置.prepend(创建元素)

<body>
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<button class="add">添加</button>
<button class="del">删除</button>
<script>
    $('.add').click(function(){
        var newli = $('<li>4</li>')
        $('ul').append(newli)
    })
</script>
</body>

  

        后:选到对应位置.append(创建元素)

$('ul').prepend(newli)

  

②外部:

        前:选到对应位置.before(创建元素)

$('ul').before(newli)

        后:选到对应位置.after(创建元素)

$('ul').after(newli)

  

(3)删除

①选到对应元素:remove()删除本身

$('.del').click(function(){
        $(newli).remove()
})

②选到对应元素:empty()删除匹配的所有子节点

$('ul').empty()

③对应元素:html('')删除匹配的所有子节点

$('ul').html('')  //注意有单引号

4、完整的效果

<body>
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<button class="add">添加</button>
<button class="del">删除</button>
<script>
    $('.add').click(function(){
        var newli
        $('li').each(function(index,dom){
            newli = $(`<li>${index+2}</li>`)//``模板字符串
        })
        $('ul').append(newli)
    })
    $('.del').click(function(){
        $('ul').html('')
    })
</script>
</body>

三、尺寸、位置操作

1、尺寸

例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../jquery-3.6.0.js"></script>
    <style>
        div{
            width: 100px;
            height: 200px;
            padding: 10px;
            border: 5px solid red;
            margin: 10px;
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>

(1)width(),height():获取元素的宽高,只算宽高width、height

<script>
    console.log($('div').width());//100
    console.log($('div').height());//200
</script>

(2)innerWidth(),innerHeight():获取元素的宽高,width,height+padding

<script>
    console.log($('div').innerWidth());//120
    console.log($('div').innerHeight());//220
</script>

(3)outerWidth(),outerHeight():获取元素的宽高,width,height+padding+border

<script>
    console.log($('div').outerWidth());//130
    console.log($('div').outerHeight());//230
</script>

(4)outerWidth(true),outerHeight(true):获取元素的宽高,width,height+padding+border+magrin

<script>
    console.log($('div').outerWidth(true));//150
    console.log($('div').outerHeight(true));//250
</script>

2、位置

(1)offset():设置或获取元素偏移量(获取,设置元素相对于偏离文档的位置)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../jquery-3.6.0.js"></script>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 100px;
            height: 200px;
            padding: 10px;
            border: 5px solid red;
            margin: 10px;
        }
    </style>
</head>
<body>
<div></div>
<script>
    console.log($('div').offset());
    $('div').offset({top:50,left:30})
    console.log($('div').offset());
</script>
</body>
</html>

(2)position():获取元素偏移【只能获取不能设置】

返回被选元素带有定位的父级偏移坐标,如果父级没有定位,那就是以文档为准

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../jquery-3.6.0.js"></script>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            width: 100px;
            height: 200px;
            padding: 10px;
            border: 5px solid red;
            margin: 10px;
            position: relative;
        }
        .son{
            width: 20px;
            height: 20px;
            background-color: skyblue;
            position: absolute;
        }
    </style>
</head>
<body>
<div class="father">
    <div class="son"></div>
</div>
<script>
    console.log($('.son').position());
    $('.father').offset({top:50,left:30})
    console.log($('.son').position());
</script>
</body>
</html>

(3)滚动条:scrollTop()/sroclLeft()设置或获取元素被卷去的头部和左侧

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../jquery-3.6.0.js"></script>
    <style>
        .box{
            width: 300px;
            height: 300px;
            overflow: auto;
        }
    </style>
</head>
<body>
<div class="box">
    <img src="https://p1.music.126.net/RQImixd1s2jJwb7LWbv-iw==/109951167683330209.jpg?imageView&quality=89" alt="">
</div>
<script>
    $('.box').scroll(function(){
        console.log($('.box').scrollTop()); //返回:顶部滚动多少
    })
</script>
</body>
</html>

(4)带有动画的返回顶部

$(window).scroll(function(){
        $(document).scrollTop()
})

完整例子:具体动画效果后续补发视频给小伙伴们🧐

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../jquery-3.6.0.js"></script>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .btn{
            width: 200px;
            height: 50px;
            background-color: skyblue;
            line-height: 50px;
            text-align: center;
            position: fixed;
            bottom: 100px;
            right: 50px;
            display: none;
        }
    </style>
</head>
<body>
    <img src="http://p1.music.126.net/c-LMZbZbQLcMobnFciAl7w==/109951167683507100.jpg?imageView&blur=40x20" alt="">
    <img src="http://p1.music.126.net/wb1Gd2C7DknUivCqdFaKeQ==/109951167683687375.jpg?imageView&blur=40x20" alt="">
    <img src="http://p1.music.126.net/RQImixd1s2jJwb7LWbv-iw==/109951167683330209.jpg?imageView&blur=40x20" alt="">
    <button class="btn">返回顶部</button>
    <script>
        $(window).scroll(function () {
            console.log($(document).scrollTop());
            if ($(document).scrollTop() >= 300) {
                $('.btn').fadeIn(500)
            } else {
                $('.btn').fadeOut(500)
            }
        })
        $('.btn').click(function () {
            $('html').animate(
                {
                    scrollTop: '0'
                },
                1000
            )
        })
    </script>
</body>
</html>

四、事件(jQuery 事件 | 菜鸟教程

1、单个事件注册:element.事件(fuction(){})

(1).hover:模仿鼠标悬停事件

(2)参数

        ①函数1:鼠标移上去触发什么事件

        ②函数2:鼠标离开触发什么事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../jquery-3.6.0.js"></script>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        button{
            width: 200px;
            height: 50px;
        }
    </style>
</head>
<body>
    <button>鼠标悬浮</button>
    <script>
        $('button').hover(
            function(){
                $(this).css('background','red')
            },
            function(){
                $(this).css('background','')
            }
        )
    </script>
</body>
</html>

2、事件处理on()绑定事件:$('选择器').on('类型',fuction(){})

(1)优点一:可以绑定多个函数,处理相同或不同的程序

①处理相同的程序

<script>
    $('button').on('click mouseenter',function(){
        console.log('成功');
    })
</script>

②处理不同的程序

<script>
    $('button').on({
        click:function(){
            console.log('点击成功');
        },
        mouseenter:function(){
            console.log('成功');
        }
    })
</script>

(2)优点二: 可以给动态生成元素绑定,绑定事件(必须是对子节点绑定)

<body>
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<button class="add">添加</button>
<button class="del">删除</button>
<script>
    $('.add').click(function(){
        var newli
        $('li').each(function(index,dom){
            newli = $(`<li>${index+2}</li>`)//``模板字符串
        })
        $('ul').append(newli)
    })
    $('.del').click(function(){
        $('ul').html('')
    })
    $('ul').on('click','li',function(){
        console.log('点击');
    })
</script>
</body>

3、事件处理off()解绑事件

(1)移除全部事件:ele.off()

<script>
    $('button').on({
        click:function(){
            console.log('点击成功');
        },
        mouseenter:function(){
            console.log('成功');
        }
    })
    $('button').off()
</script>

(2)移除某一个事件:ele.off('类型')

$('button').off('click')

4、事件只触发一次:one()

$('button').one('click',function(){
        console.log('仅一次');
})

5、自动触发事件

$('button').click()

五、插件

jQuery插件库-收集最全最新最好的jQuery插件

小伙伴可以在这个网站找喜欢的作品,下载压缩包后,可以直接看效果,而且都有源码的哦🧐

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五秒法则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值