首页 前端知识 JavaScript基础库

JavaScript基础库

2024-04-09 00:04:11 前端知识 前端哥 889 896 我要收藏

JQuery

JavaScript库

一个封装好的特定的集合(方法和函数)。在这个库里面,封装了很多定义好的函数,支持js的常规操作以及拓展

 

JQuery

是一个快速、简介的js库,设计的宗旨"write less,do more"

学习jquery的本质:学习调用这些函数(方法)

JQuery的使用

  • 引入jq文件

  • 下方使用script标签

<script src="./jquery-3.6.0.js"></script>
<script>
        var box1 = document.querySelector(".box1")
        console.log(box1);
        var box1Jq = $('.box1')
        console.log(box1Jq);
    </script>

JQuery的入口函数

  • 等待文档加载完成(图片不需要加载完成),执行代码

            $(document).ready(function () {
                console.log(1, $(".box1"));
            })
  • 等待文档加载完成(图片不需要加载完成),执行代码,是上一个的缩写

            $(function () {
                console.log(2, $(".box1"));
            })
  • 等待文档加载完成(图片需要加载完成),执行代码

            $(window).on("load", function () {
                console.log(3, $(".box1"));
            })
            $(window).on("load", function () {
                console.log(33, $(".box1"));
            })
  • 原生写法,(图片需要加载完成)

            window.onload = function () {
                console.log(4, $(".box1"));
            }
            // 原生的写法是会被覆盖的
            window.onload = function () {
                console.log(44, $(".box1"));
            }

JQuery的顶级对象$

$是jQuery的别称,可以使用jQuery代替的,但是为了方便,一般直接使用$

JQuery常用API

JQuery的选择器

原生的js获取DOM的方法很多,但是有一些有兼容性的问题,所以jq封装选择方法,使我们获取元素有一个统一的标准

$(选择器) 返回的是Jq对象,是一个数组,不是dom数组 ,要使用jq的方法,就必须使用jq的对象来调用

    <div class="box1"></div>
    <div id="box1">
        <div class="box2"></div>
    </div>
    <script>
        // 返回的不论是id还是类全部都是一个jq的对象数组
        // 选择器的使用和CSS的选择器是一样
        console.log($(".box1"));
        console.log($("#box1"));
        console.log($("div"));
        console.log($(".box2"));
        console.log($("#box1 .box2"));
    </script>

隐式迭代

遍历内部的DOM元素的过程叫做隐式迭代

jq会自动给匹配的元素进行循环遍历,执行相应的方法,我们不需要自己来写循环遍历的操作,简化代码

        // 为五个li添加点击事件
        // 原生的写法
        var lis = document.querySelectorAll("li")
        for (var i = 0; i < lis.length; i++) {
            lis[i].style.color = 'red'
        }
        // jq的写法
        var liss = $('li')
        liss.css("color", "blue")

获取指定下标的元素

            // 获取指定下标的元素,使用eq方法获取对应下标的元素
            console.log(liss.eq(i));
            liss.eq(i).css("color", colors[i])

获取当前元素的下标

        liss.click(function () {
            // console.log(this);
            // 使用$将this转换成jq对象
            console.log($(this).index());
        })

排他思想

当前元素设置样式,其他的兄弟元素清楚样式

siblings():返回被选子元素的同级元素

        lis.click(function () {
            // console.log(this);
            // lis.css("color", 'black')
            // 将当前的这个元素的字体颜色设置成红色
            $(this).css("color", "red")
            // 获取到当前元素的兄弟元素,
            // 可以传入一个选择器,表示只查找兄弟元素并且符合选择器规则的元素
            console.log($(this).siblings('.item'));
            $(this).siblings('.item').css("color", "black")
        })

链式编程

JQ的对象是可以一直调用jq函数的,可以把所有代码写在一行

        lis.click(function () {
            $(this).css("color", "red").siblings('.item').css("color", "black")
        })

样式操作

  • $(选择器).css(属性):获取属性的值

    console.log($('.box1').css("background-color"));
  • $(选择器).css(属性,值):设置属性的值

    $('.box1').css("background-color", 'blue')
  • 如果要设置的属性很多,可以使用对象来设置

            // 设置属性的值
            $('.box1').css({
                width: '200px',
                height: "200px",
                color: 'white',
                // 参数为对象的时候,要使用驼峰命名的方式
                fontSize: '50px',
                // 或者使用keb-base的字符串写法
                'background-color': 'blue'
            })
  • 控制元素的类名,设置类名

    • 添加类:$(选择器).addClass("类名")

              $('.add').click(function () {
                  $('.box1').addClass("box4")
              })
    • 删除类:$(选择器).removeClass("类名")

              $('.del').click(function () {
                  $('.box2').removeClass("box2")
              })
    • 切换类:$(选择器).toggleClass("类名")

              $('.toggle').click(function () {
                  $('.box3').toggleClass("box4")
              })

动画

显示隐藏

show(speed,callback)

speed:规定动画的速度,值可以是slow,fast,也可是毫秒数

callback:回调函数,动画结束后才会执行的函数

show hide toggle

        $('.btn1').click(function () {
            $('.container').show(1000, function () {
                console.log("动画结束了");
            })
        })
        $('.btn2').click(function () {
            // console.log(this);
            // 获取container容器
            // hide隐藏元素
            $('.container').hide(1000, function () {
                console.log("动画结束了");
            })
        })
        $('.btn3').click(function () {
            $('.container').toggle(1000, function () {
                console.log("动画结束了");
            })
        })

滑动

slideDown slideUp slideToggle

        $('.btn1').click(function () {
            $('.container').slideDown(1000, function () {
                console.log("动画结束了");
            })
        })
        $('.btn2').click(function () {
            $('.container').slideUp(1000, function () {
                console.log("动画结束了");
            })
        })
        $('.btn3').click(function () {
            $('.container').slideToggle(1000, function () {
                console.log("动画结束了");
            })
        })

淡入淡出

fadeIn fadeOut fadeToggle

fadeTo(speed,opacity,callback)

opacity:切换透明度到指定值

        $('.btn1').click(function () {
            $('.container').fadeIn(1000, function () {
                console.log("动画结束了");
            })
        })
        $('.btn2').click(function () {
            $('.container').fadeOut(1000, function () {
                console.log("动画结束了");
            })
        })
        $('.btn3').click(function () {
            $('.container').fadeToggle(1000, function () {
                console.log("动画结束了");
            })
        })
        $('.btn4').click(function () {
            $('.container').fadeTo(1000, 0.5, function () {
                console.log("动画结束了");
            })
        })

自定义动画

animate(params,speed,callback)

params:终止的时候的样式属性

speed:速度,和上面一样

callback:回调函数,和上面一样

        $('.btn1').click(function () {
            $('.container').animate({
                width: '200px',
                height: '200px',
                backgroundColor: '#00f',
                fontSize: '80px',
                color:'white'
            }, 1000, function () {
                console.log("动画结束了");
            })
        })

停止动画

停止正在执行的动画

        $('.btn2').click(function () {
            $('.container').stop()
        })

属性操作

1、固有属性

prop("属性名") 获取属性值

prop("属性名","属性值") 设置属性值

元素本身自带的属性

1、如果元素有对应的属性,则返回指定的属性值

2、如果元素没有对应的属性值,则返回空字符串,如果这个属性不是元素自带的则返回undefined

$("img").prop("src", imgUrl)

2、自定义属性

attr("属性名") 获取自定义属性值

attr("属性名","属性值") 设置自定义属性值

1、如果元素有对应的属性,则返回指定的属性值

2、如果元素没有对应的属性值,则返回undefined

$("img").attr("src", imgUrl)

3、数据缓存

data,可以在指定的元素上存取数据,不会改变dom结构,页面刷新,存放的数据就消失了

data("属性名") 获取自定义属性值

data("属性名","属性值") 设置自定义属性值

<!-- 在标签上写数据需要使用data-属性值 -->
console.log($("img").data("src"));
$("img").data("src", imgUrl)
console.log($("img").data("title"));
console.log($("img").data("href"));

区别

prop和attr只能存字符串,data可存任意类型

prop>attr prop>data data和attr的效率不一定

内容文本

html() 获取或者设置元素的内容 相当于 innerHTML

text() 获取或者设置元素的文本内容 相当于 innerText

val() 获取或者设置表单元素的值 相当于value

        console.log($('.box1').text());
        console.log($('.box1').html());
        $('.box1').text("<button>这是一个按钮</button>")
        $('.box1').html("<button>这是一个按钮</button>")
        console.log($('input').val());
        $('input').val("修改后的值")

遍历操作

jq的隐式迭代会对同一类元素做一样的操作,如果要想对不同元素做不同操作,需要用到遍历

遍历DOM元素

jqDom.each(function (index,domEl) {})

index:索引号

domEl:DOM元素对象,不是jq对象,要用jq的方法要先转换成jq对象

        // 只能循环jq的dom数组
        $("li").each(function (index, domEl) {
            console.log(index, domEl);
            // domEl.style.color = colors[index]
            $(domEl).css('color', colors[index])
        })

遍历所有对象

$. each(obj,function (index,item) {})

obj:被遍历的对象,任何对象都可以,主要用于数据处理

index:索引号

item:遍历的元素

        // 可以遍历任何对象
        $.each($('li'), function (index, item) {
            console.log(index, item);
        })

元素操作

1、创建元素

var li = $(`<li>4</li>`)

2、添加元素

  • 内部

    append(el) // 添加到内部元素的末尾

    prepend(el) // 添加到内部元素前面

  • 外部

    before(el) // 添加到元素外部前面

    after(el) // 添加到元素外部后面

        $('ul').append(li)
        $('ul').prepend(li)
        $('ul').after(li)
        $('ul').before(li)
        // 同时操作同一个元素,最终的结果会是最后调用的那一个操作

3、删除元素

remove() 删除匹配的元素,包括本身

empty() 删除匹配的元素的子元素,不包括本身

html('') 情况匹配的元素内容

尺寸操作、位置操作

1、尺寸

      console.log($(".box1").width()); // 获取匹配元素的宽度,只计算width
      console.log($(".box1").height());// 获取匹配元素的高度,只计算height
      console.log($(".box1").innerWidth());// 获取匹配元素的宽度,包含padding
      console.log($(".box1").innerHeight());// 获取匹配元素的高度,包含padding
      console.log($(".box1").outerWidth());// 获取匹配元素的宽度,包含padding、border
      console.log($(".box1").outerHeight());// 获取匹配元素的高度,包含padding、border
      console.log($(".box1").outerWidth(true));// 获取匹配元素的宽度,包含padding、border、margin
      console.log($(".box1").outerHeight(true));// 获取匹配元素的高度,包含padding、border、margin

2、位置

  • offset

    用来设置或者放回被选择元素相对于文档的偏移,和父级没有关系

          // 可以直接获取两个属性:top、left   相对于文档左侧和顶部的距离
          console.log($(".box1").offset());
          //  也可以设置位置
          $(".box1").offset({
            left: 0,
            top: 60,
          });
  • position

    用来返回整个元素相对于父元素的位置(父元素必须有position属性),没有则往上级找,直到body,会把margin一起算到位置中,只能获取不能设置

          // 可以直接获取两个属性:top、left   相对于父元素左侧和顶部的距离
          console.log($(".box1").position());

3、滚动事件

      $(document).scroll(function () {
        // scrollTop()/scrollLeft 用来获取滚动的长度
        if ($(document).scrollTop() > 400) {
          $(".top").fadeIn(1000);
        } else {
          $(".top").fadeOut(1000);
        }
      });
      $(".top").click(function () {
        // 设置滚动的高度为0,实现回到顶部的效果
        $(document).scrollTop(0);
      });

事件

1、单个事件注册

el.事件类型(function(){

    // 事件处理程序

})

  • hover事件 模仿鼠标悬停

         $(".box1").hover(
            function () {
              $(".box1").css({
                width: "200px",
                height: 200,
              });
            },
            function () {
              $(".box1").css({
                width: "100px",
                height: 100,
              });
            }
          );

2、事件处理 on绑定事件

el.on('events',fn)
// events 一个或者多个用空格分隔的事件类型
// fn 要执行的函数

优点

  • 可以绑定多个函数

          // 绑定多个函数,如果多个事件都是同一个操作
          // 可以多个写在一起
          $(".box1").on("mouseenter mouseleave click", function () {
            console.log(1);
          });
          // 绑定多个函数,如果多个事件做的是不同操作
          // 使用对象的形式
          $(".box1").on({
            click: function () {
              console.log(1);
            },
            mouseenter: function () {
              console.log(2);
            },
            mouseleave: function () {
              console.log(3);
            },
          });
  • 给子元素动态绑定事件

          // 把事件委托给父元素
          // 可以给动态生成的元素绑定事件
          $("ul").on("click", "li", function () {
            console.log(this);
          });

off解绑事件

        // 解除事件绑定
        // 解除所有事件
        $("button").off();
        // 解除单个事件
        $("button").off("click");有事件

one事件 只触发一次

$("button").one("click", function () {
    sendMsg();
});

自动触发事件

$("button").click();

jq的事件处理对象

      // 冒泡事件
      // 点击子元素的时候如果父元素上有一样事件类型,则父元素也会被触发
      $(".box1").click(function (e) {
        console.log("box1");
      }); 
      $(".box2").click(function (e) {
        e.stopPropagation();
        console.log("box2");
      });

      // 默认事件
      $("a").click(function (e) {
        e.preventDefault();
        console.log("a");
      });

JQ插件库

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

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

PostgreSQL 操作json/jsonb

2024-04-20 17:04:16

Excel转json的两种办法

2024-04-20 17:04:09

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