首页 前端知识 jQuery的使用

jQuery的使用

2024-03-08 10:03:53 前端知识 前端哥 536 915 我要收藏

注意:在使用 jquery时,需先引入jquery文件:

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

jquery: 

是对JS代码的封装,jquery所有的方法返回的都是jquery对象,该对象内部存储一个私有的数组,数组中存储需要操作的DOM节点元素。

jquery使用以下语句获取标签:

$('.list'):$相当于document.querySelector,

即:$('.list') =>document.querySelector('.list')。

$相当于将其进行了封装,使语句更简洁。

JS和jquery在添加内容和样式时的区别: 

网页布局: 

<body>
    <ul class="list" id="example">

    </ul>
</body>

使用js添加内容和样式 

let list=document.querySelector('.list');
    list.innerHTML='文本';
    cssText:和innerHTML一样,但提高了渲染性能
    list.style.cssText=`width:200px;background-color:red;color:white;`;

 使用jquery添加内容和样式 

//设置多个样式
    $('.list').html('<h1>文本</h1>').css({
        //html和text区别:html方法在获取和设置元素时,设置的是HTML代码,text设置的是元素的文本内容,等价于JS中innerHTML和innerText
        width:'200px',
        backgroundColor:'red',
        color:'white'
    });
//设置一个样式
    $('.list').html('文本').css('color','blue');

 jquery中的一些方法:

网页布局:  

<body>
    <ul class="list" id="example">

    </ul>
</body>

append():向指定标签(父级)所有内容的后面插入指定的内容

prepend():向父级标签所有内容的前面插入内容

以上两个操作为子级操作

after():向指定标签所有内容的后面插入内容

before():向指定标签所有内容的前面插入内容

以上两个操作为同级操作

replaceWith():用指定内容替换指定的标签

empty():删除匹配元素集合中所有的子节点(将标签中的内容删除,但标签还在)

remove():直接删除指定标签,标签名和内容全删除

//在js中,1.在当前标签的尾部插入一个新元素:appendChild(newelement),
    //2.在开头插入一个新元素:insertBefore(newelement)

    //文档处理
    //向指定标签(父级)所有内容的后面插入指定的内容,本次操作是子级操作
    $('.list').append('<li>向父级所有内容的后面插入指定的内容</li>');

    //向父级标签所有内容的前面插入内容,本次操作是子级操作
    $('.list').prepend('<li>向父级标签所有内容的前面插入内容</li>');

    //向指定标签所有内容的前面或后面插入内容,本次操作是同级操作
    //1.后面插入内容
    $('.list').after('<li>后面插入内容,是同级操作</li>');
    //2.前面插入内容
    $('#example').before('<li>前面插入内容,是同级操作</li>');

    //用指定内容替换指定的标签,等价于js中的replaceChild(newChild, oldChild),替换子节点
    //$('#example').replaceWith('<p>替换标签</p>');//将id为example的ul标签及其子级全部内容替换为p标签

    //删除指定元素
    //$('li').empty();//删除匹配元素集合中所有的子节点(将标签中的内容删除,但标签还在)
    //$('li').remove();//直接删除指定标签,标签名和内容全删除

网页布局: 

<body>
    <div class="name">
        <p>文本</p>
        <button class="btn">显示</button>
        <input type="text" value="你好">
        <input type="password">
    </div>
</body>

 (a).attr(b,c):将元素节点a的b属性值修改为c,属性存在则修改,不存在则添加

attr(a):获取元素,返回元素节点属性a的值

removeAttr():删除元素属性

html():获取标签内容

html('<h1>修改标签内容</h1>'):修改标签内容

text('修改文本内容'):修改文本内容

val():获取value值

val('修改value值'):修改value值

$('input').get(0):获取input标签

input[type="text"]:获取type为text的input标签

<script src="./js/jquery-3.6.1.min.js"></script>
<script>
    //(a).attr(b,c):修改元素节点a的b属性为c,属性存在则修改,不存在则添加
    $('div').attr('id','name1');
    $('div').attr('class','name1');
    console.log($('div').attr('class'));//attr(a):获取元素,返回元素节点属性a的值
    //删除元素属性
    console.log($('div').removeAttr('class'));
    //获取标签内容
    console.log($('.btn').html());//输出结果:显示
    //修改标签内容
    console.log($('.btn').html('<h1>修改标签内容</h1>'));
    //修改文本内容
    console.log($('p').text('修改文本内容'));
//form表单设置或获取数据通过val()操作。
    //获取value值
    console.log($('input').val());
    //修改value值
    console.log($('input').val('修改value值'));
    //获取input标签
    console.log($('input').get(0));
    console.log($('input[type="text"]'));
</script>

  jquery设置点击事件

 页面布局:

<body>
    <div>
        <p>点击事件</p>
        <button class="btn">点击</button>
    </div>
</body>

设置点击事件: 

$('div').on('click',function(e){
        console.log(e);
      })

 // 以上默认的事件是以事件冒泡处理(当点击div时,target为div,当点击p时,target为p,当点击button时,target为button)

//target:事件的目标元素

可以指定给div中的.btn绑定(灵活)---明确指定给div中的.btn添加事件(运行返回不一样) 

$('div').on('click','.btn',function(e){
        console.log(this);//this指向button标签(原生的DOM节点,不是jquery对象,但系统会转换为jquery对象)
//转变为jquery对象
        //parent():返回指定节点的父级节点,返回结果是一个jquery对象
        console.log($(this).parent());
        //get()[0]:返回document节点的唯一方法。返回结果为:div标签
        console.log($(this).parent().get()[0]);
        //查找HTML元素 parents
        console.log($(this).parents('html')[0]);
        //返回所有的子元素 children
        console.log($('html').children());
        //在每个div中查找所有的.btn
        console.log($('div').children('.btn'));
      })

以上涉及的方法:

(1)parent():返回指定节点的父级节点,返回结果是一个jquery对象

(2)get()[0]:返回document节点的唯一方法。返回结果为:标签 

(3)parents:查找HTML元素

(4)children:返回所有的子元素

例:

 //在每个div中查找所有的.btn

  console.log($('div').children('.btn'));

 对标签坐标信息或尺寸信息的获取

<!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>
    <style>
        .win{
            width: 200px;
            height: 200px;
            background-color: blue;
            position: relative;
        }
        div{
            background-color: aqua;
            position: absolute;
            top: 100px;
            left: 100px;

        }
        body,html{
            height: 1000px;
        }
    </style>
</head>
<body>
    <div class="win">
        <div>
            <p>文本</p>
            <button class="btn">按钮</button>
        </div>
    </div>
</body>
<script src="./js/jquery-3.6.1.min.js"></script>
<script>
    //对标签坐标信息或尺寸信息的获取
    //获取正常网页的位置。offset().left:距离左侧的距离
    console.log($('.win div').offset().left,$('.win div').offset().top);//8 16
    console.log($('.win div').position().left);
    //获取网页滚动的距离
    //scrollTop():可以用来获取浏览器滚动距离,也可以设置浏览器滚动到的位置
    $(window).on('scroll',function(){
       console.log($(window).scrollTop());
    });
    //设置网页初始位置
    //load:传递参数
    $(window).on('load',function(){
        $(window).scrollTop(500);
    });
</script>
</html>

 以上涉及的方法:

(1)offset().left:距离左侧的距离

(2)position():获取position值

(3)scrollTop():可以用来获取浏览器滚动距离,也可以设置浏览器滚动到的位置

格式:

$(window).on('scroll',function(){

       console.log($(window).scrollTop());

    });

(4)设置网页初始位置,load:传递参数

格式:

$(window).on('load',function(){

        $(window).scrollTop(500);

    });

 

 

其他方法:

(1)width():获取标签的尺寸信息(标签的宽高---内容层)

(2)innerWidth():获取或设置标签内容层+内边距的宽度

(3)outerWidth():内容层+内边距+边框border的宽度

使用jquery实现内容的隐藏和显示:两种方式 

<!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>
    <style>
        .mark{
            width: 500px;
            height: 200px;
            background-color: aqua;
            text-align: center;
            line-height: 200px;
            font-size: 35px;
            color: white;
            /* display: none; */
        }
    </style>
</head>
<body>
    <div class="mark">对CSS样式修改</div>
    <button class="btn" id="btn">隐藏</button>
</body>
<script src="./js/jquery-3.6.1.min.js"></script>
<script>
    //设置CSS样式
       $('.mark').css({
        //inset:阴影方向,内倾,默认向外
        boxShadow:'inset 0 0 50px green'
       });
       console.log($('.mark').css('color'));
       //方式1:
       //设置动画
    //    $('.mark').delay(2000).animate({
    //     width:'300px',
    //     height:'100px',
    //     opacity:'0.2',
        
    //     //注意:CSS样式数值类型的可以生效,非数值类型不生效。以下语句不生效
    //     boxShadow:'10px 10px 10px black',
    //     backgroundColor:'blue'
    //    },2000);

       //方式2:
    //给button按钮添加点击事件:延迟动画
    //fadeIn():淡入。fadeOut():淡出
    $('#btn').on('click',function(){
         if($(this).html()=='显示'){
            //$('.mark').show();//show():显示
               //将上面设置CSS样式:display: none;
            $('.mark').delay(2000).slideDown(2000);//slideDown():以滑块形式显示出来。2000:2s时间显示出来
            //delay(2000):延迟2s再显示
            $(this).html('隐藏');
         }else{
            $('.mark').slideUp(2000);//slideUp(2000):隐藏
            $(this).html('显示');
         }
    });
</script>
</html>

 

 

方式1:只在运行时隐藏一次,不能再显示出来。 效果如下:(按钮无效)

 

方式2:可以一直进行隐藏和显示,通过给button按钮添加点击事件:延迟动画。通过fadeIn():淡入。fadeOut():淡出实现。效果如下:

点击隐藏时:内容隐藏,且按钮变换为”显示“ 

 

点击显示时:内容显示,且按钮变换为”隐藏“  

 

实现留言板 

<!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>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .box{
            width: 500px;
            margin: 100px auto;
            border: 1px solid red;
            padding: 20px;
            background-image:url('../day24/img/7.jpg') ;
            
        }
        .div_txt{
            margin-bottom:15px ;
        }
        /* 多行文本输入框 */
        .txt{
            width: 400px;
            height: 100px;
            outline: none;
            /* 禁止拖拽文本域 */
            resize: none;
            box-shadow: 2px 2px 2px navy;
            padding: 20px;
            box-sizing: border-box;
        }
        .btn{
            display: block;
            margin-top: 15px;
            border: 0;
            background-color: rgba(168, 147, 241, 0.9);
            padding: 8px 35px;
            color: white;
            font-size: 18px;
            margin-bottom: 15px;
            box-shadow: 2px 2px 2px navy;
            
        }
        li{
            color: firebrick;
            box-shadow: 2px 2px 2px salmon;
            font-size: 18px;
            padding: 5px;
            display: none;
            overflow: hidden;
        }
        a{
            float: right;
            text-decoration: none;
            font-size: 14px;
            color: red;
            padding: 5px;
            
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="div_txt">请输入留言内容:</div>
        <!-- 多行文本输入框 -->
        <textarea name="" id="" class="txt" cols="30" rows="10">

        </textarea>
        <button class="btn">留言</button>
        <!-- 存放留言板内容 -->
        <ul>
            <!-- 在JS中动态添加 -->
           <!-- <li>第一条留言
               <a href="#">删除</a>
            </li> -->
           
        </ul>
        
    </div>
</body>
<script src="./js/jquery-3.6.1.min.js"></script>
<script>
    //1.点击留言按钮,动态创建一个li标签,放入到留言板ul中,添加删除按钮
    $('.btn').on('click',function(){
        //创建li
        var li=$('<li></li>');
        //获取内容
        li.html($('.txt').val()+'<a href="#">删除</a>');
        //console.log($('.txt').val());
        // 存放li标签,prepend:在元素开始位置插入
        $('ul').prepend(li);
        //使用滑动效果,显示被隐藏的被选元素(注意:元素初始设置为隐藏状态:display: none;)
        li.slideDown(500);
        // 清空内容
        $('.txt').val('');
    })
    //2.点击删除按钮,删除当前留言(li)
    //指定ul下的a标签,绑定点击事件
    $('ul').on('click','a',function(){
        //parent:返回被选元素的直接父元素,即:li
      //console.log($(this).parent());
      //slideUp:使用滑动效果,隐藏被选元素,注意:只有已经显示出来的才生效
      $(this).parent().slideUp(function(){
        // $(this).remove();
        $(this.remove());
      });
    })
</script>
</html>

 JS通过两步实现:

1.点击留言按钮,动态创建一个li标签,放入到留言板ul中,并添加删除按钮

2.点击删除按钮,删除当前留言(li)

 效果:

 

添加留言: 

 

删除留言: 

 

实现点击回到顶部: 

<!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>
    <style>
        body{
            height: 1500px;
        }
        .back{
            /* 固定定位:随着页面滚轮的滑动,此内容一致固定不动 */
            position: fixed;
            right: 30px;
            bottom: 100px;
            width: 60px;
            height: 60px;
            background-color: aqua;
            font-size: 14px;
            line-height: 60px;
            border-radius: 15px;
            color: white;
            text-align: center;
            box-shadow: 2px 2px 2px rebeccapurple;
            transition: all 2s;
            cursor: pointer;
            display: none;
        }
        .back:hover{
            background-color: cadetblue;
        }
        .con{
            width: 500px;
            height: 500px;
            background-color: aquamarine;
            margin: 0 auto;
            position: fixed;
            right: 35px;
            bottom: 200px;
        }
    </style>
</head>
<body>
    <div class="back">返回顶部</div>
    <div class="con"></div>
</body>
<script src="./js/jquery-3.6.1.min.js"></script>
<script>
    //匿名函数实现闭包,模拟块级作用域,减少全局变量,降低命名冲突
    //执行完匿名函数,存储在内存中的相关变量会被销毁,节省内存
    $(function(){
        //scrollTop:滚轮初始时距离顶部的位置
        $(document).scrollTop(100);
        //offset().top:.con内容距离顶部的距离
        let boxTop=$('.con').offset().top;
        //console.log(boxTop);
        $(window).scroll(function(){
            //console.log($(document).scrollTop());
            if($(document).scrollTop()>=300){
                //fadeIn():逐渐改变被选元素的不透明程度,和display: none;配套使用
                $('.back').fadeIn();
            }else{
                //fadeOut():从隐藏到可见
                $('.back').fadeOut();
            }

        });
        //点击返回到顶部
        $('.back').on('click',function(){
            //方法1:返回速度过快,解决方法:方法2
            //$(document).scrollTop(0);
            //方法2:
            //stop():停止所有在指定元素上正在运行的动画。
            $('html,body').stop().animate({
                scrollTop:0
            },500)
        })
    })
</script>
</html>

(1)使用固定定位:

/* 固定定位:随着页面滚轮的滑动,此内容一直固定不动 */

            position: fixed;

            right: 30px;

            bottom: 100px;

(2)使用匿名函数:

//匿名函数实现闭包,模拟块级作用域,减少全局变量,降低命名冲突

    //执行完匿名函数,存储在内存中的相关变量会被销毁,节省内存

(3)点击回到顶部的方法有两种:

    //方法1:返回速度过快,解决方法:方法2

            //$(document).scrollTop(0);

    //方法2:

            //stop():停止所有在指定元素上正在运行的动画。

            $('html,body').stop().animate({

                scrollTop:0

            },500)

 效果:

起始位置: 

 

 滑块到达距离顶部>300位置时:

 

点击返回顶部: 

 

转载请注明出处或者链接地址:https://www.qianduange.cn//article/3465.html
标签
评论
发布的文章

@JsonCreator和@JsonValue

2024-05-05 22:05:05

Python 字符串转换为 JSON

2024-05-05 22:05:00

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!