• jQuery


    jQuery介绍

    1. jQuery是一个轻量级的、兼容多浏览器的JavaScript库。
    2. jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Write less, do more.“

    jQuery的优势

    1. 一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。
    2. 丰富的DOM选择器,jQuery的选择器用起来很方便,比如要找到某个DOM对象的相邻元素,JS可能要写好几行代码,而jQuery一行代码就搞定了,再比如要将一个表格的隔行变色,jQuery也是一行代码搞定。
    3. 链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。
    4. 事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。
    5. Ajax操作支持。jQuery简化了AJAX操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信。
    6. 跨浏览器兼容。jQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。
    7. 插件扩展开发。jQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前端页面上的组件都有对应插件,并且用jQuery插件做出来的效果很炫,并且可以根据自己需要去改写和封装插件,简单实用。

    jQuery内容:

    1. 选择器
    2. 筛选器
    3. 样式操作
    4. 文本操作
    5. 属性操作
    6. 文档处理
    7. 事件
    8. 动画效果
    9. 插件
    10. each、data、Ajax

    基础语法:

      $(selector).action()

    查找标签:

      1、选择器:

    选择器 代码
    id $('#id')
    标签 $('tagName')
    class类 $('.className')
    组合 $('#d1, .className, tagName')

    层级
    $('x y')
    $('x > y')
    $('x + y')
    $('x ~ y')

        属性选择器

    [attribute]
    [attribute=value]// 属性等于
    [attribute!=value]// 属性不等于

      2、基本筛选器:

    :first // 第一个
    :last // 最后一个
    :eq(index)// 索引等于index的那个元素
    :even // 匹配所有索引值为偶数的元素,从 0 开始计数
    :odd // 匹配所有索引值为奇数的元素,从 0 开始计数
    :gt(index)// 匹配所有大于给定索引值的元素
    :lt(index)// 匹配所有小于给定索引值的元素
    :not(元素选择器)// 移除所有满足not条件的标签
    :has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)

        表单筛选器

    :text
    :password
    :file
    :radio
    :checkbox
    
    :submit
    :reset
    :button

        表单对象属性

    :enabled
    :disabled  //不可用
    :checked
    :selected  //被选中
    <form>
      <input name="email" disabled="disabled" />
      <input name="id" />
    </form>
    
    $("input:enabled")  // 找到可用的input标签
    例:找到可用的input标签
    <select id="s1">
      <option value="beijing">北京市</option>
      <option value="shanghai">上海市</option>
      <option selected value="guangzhou">广州市</option>
      <option value="shenzhen">深圳市</option>
    </select>
    
    $(":selected")  // 找到所有被选中的option
    例:找到被选中的option

    筛选器方法:

      1、下一个元素:$('#id').next()、.nextAll()、.nextuntill('#i2')

      2、上一个元素:$('#id').prev()、.prevAll()、.prevuntill('#i2')

       3、父亲元素:$('#id').parent()、parentAll()、.parentuntill('#i2')

       4、儿子和兄弟元素:

          $('#id').children(); // 儿子们

          $('#id').siblings(); // 兄弟们

       查找:$('div').find('p')  等价于$('div p')

       筛选:$("div").filter(".c1")  等价于$("div.c1")

      补充

    .first() // 获取匹配的第一个元素
    .last() // 获取匹配的最后一个元素
    .not() // 从匹配元素的集合中删除与指定表达式匹配的元素
    .has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
    .eq() // 索引值等于指定值的元素

    操作标签:

      样式操作

    addClass();// 添加指定的CSS类名。
    removeClass();// 移除指定的CSS类名。
    hasClass();// 判断样式存不存在
    toggleClass();// 切换CSS类名,如果有就移除,如果没有就添加。

      位置操作

    offset()// 获取匹配元素在当前窗口的相对偏移或设置元素位置
    position()// 获取匹配元素相对父元素的偏移
    scrollTop()// 获取匹配元素相对滚动条顶部的偏移
    scrollLeft()// 获取匹配元素相对滚动条左侧的偏移

    .offset()方法允许我们检索一个元素相对于文档(document)的当前位置。

    和 .position()的差别在于: .position()是相对于相对于父级元素的位移。

      尺寸:

    height()    文本高度
    width()
    innerHeight()   文本+padding 高度
    innerWidth()
    outerHeight()  文本+padding+border 高度
    outerWidth()

    文本操作:

      HTML代码

    html()// 取得第一个匹配元素的html内容
    html(val)// 设置所有匹配元素的html内容

      文本值:

    text()// 取得所有匹配元素的内容
    text(val)// 设置所有匹配元素的内容

      值 :

    val()// 取得第一个匹配元素的当前值
    val(val)// 设置所有匹配元素的值
    val([val1, val2])// 设置多选的checkbox、多选select的值

      设置值:

    $("[name='hobby']").val(['basketball', 'football']);
    $("#s1").val(["1", "2"])

    属性操作:

      1、用于id等或自定义属性:

    attr(attrName)// 返回第一个匹配元素的属性值
    attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
    attr({k1: v1, k2:v2})// 为所有匹配元素设置多个属性值
    removeAttr()// 从每一个匹配的元素中删除一个属性

      2、用于checkbox和radio属性

    prop() // 获取属性
    removeProp() // 移除属性

      prop和attr的区别:

      attr全称attribute(属性) 

      prop全称property(属性)

      虽然都是属性,但他们所指的属性并不相同,attr所指的属性是HTML标签属性,而prop所指的是DOM对象属性,可以认为attr是显式的,而prop是隐式的。

      总结一下:

    1. 对于标签上有的能看到的属性和自定义属性都用attr
    2. 对于返回布尔值的比如checkbox、radio和option的是否被选中都用prop。

    文档处理:

      添加到指定元素内部的后面

    $(A).append(B)// 把B追加到A
    $(A).appendTo(B)// 把A追加到B

      添加到指定元素内部的前面

    $(A).prepend(B)// 把B前置到A
    $(A).prependTo(B)// 把A前置到B

      添加到指定元素外部的后面

    $(A).after(B)// 把B放到A的后面
    $(A).insertAfter(B)// 把A放到B的后面

      添加到指定元素外部的前面

    $(A).before(B)// 把B放到A的前面
    $(A).insertBefore(B)// 把A放到B的前面

      移除和清空元素

    remove()// 从DOM中删除所有匹配的元素。(div也删除)
    empty()// 删除匹配的元素集合中所有的子节点。(删除div下)

      替换

    replaceWith()
    replaceAll()

      克隆

    clone() // 参数
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="x-ua-compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>克隆</title>
      <style>
        #b1 {
          background-color: deeppink;
          padding: 5px;
          color: white;
          margin: 5px;
        }
        #b2 {
          background-color: dodgerblue;
          padding: 5px;
          color: white;
          margin: 5px;
        }
      </style>
    </head>
    <body>
    
    <button id="b1">屠龙宝刀,点击就送</button>
    <hr>
    <button id="b2">屠龙宝刀,点击就送</button>
    
    <script src="jquery-3.2.1.min.js"></script>
    <script>
      // clone方法不加参数true,克隆标签但不克隆标签带的事件
      $("#b1").on("click", function () {
        $(this).clone().insertAfter(this);
      });
      // clone方法加参数true,克隆标签并且克隆标签带的事件
      $("#b2").on("click", function () {
        $(this).clone(true).insertAfter(this);
      });
    </script>
    </body>
    </html>
    示例

    事件绑定:

      . on( events [, selector ],function(){})

    • events: 事件
    • selector: 选择器(可选的)
    • function: 事件处理函数

    移除事件:

      .off( events [, selector ][,function(){}])

    阻止后续事件执行:

      1、return false;  //常见组织表单提交等

      2、e.prevetDefault();

    阻止事件冒泡:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>阻止事件冒泡</title>
    </head>
    <body>
    <div>
        <p>
            <span>点我</span>
        </p>
    </div>
    <script src="jquery-3.3.1.min.js"></script>
    <script>
        $("span").click(function (e) {
            alert("span");
            e.stopPropagation();
        });
    
        $("p").click(function () {
            alert("p");
        });
        $("div").click(function () {
            alert("div");
        })
    </script>
    </body>
    </html>

    页面载入:

    当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。这是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度。

        两种写法

    $(document).ready(function(){
    // 在这里写你的JS代码...
    })

        简写

    $(function(){
    // 你在这里写你的代码
    })

        文档加载完绑定事件,并且阻止默认事件发生:

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="x-ua-compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>登录注册示例</title>
      <style>
        .error {
          color: red;
        }
      </style>
    </head>
    <body>
    
    <form id="myForm">
      <label for="name">姓名</label>
      <input type="text" id="name">
      <span class="error"></span>
      <label for="passwd">密码</label>
      <input type="password" id="passwd">
      <span class="error"></span>
      <input type="submit" id="modal-submit" value="登录">
    </form>
    
    <script src="jquery-3.2.1.min.js"></script>
    <script src="s7validate.js"></script>
    <script>
      function myValidation() {
        // 多次用到的jQuery对象存储到一个变量,避免重复查询文档树
        var $myForm = $("#myForm");
        $myForm.find(":submit").on("click", function () {
          // 定义一个标志位,记录表单填写是否正常
          var flag = true;
          $myForm.find(":text, :password").each(function () {
            var val = $(this).val();
            if (val.length <= 0 ){
              var labelName = $(this).prev("label").text();
              $(this).next("span").text(labelName + "不能为空");
              flag = false;
            }
          });
          // 表单填写有误就会返回false,阻止submit按钮默认的提交表单事件
          return flag;
        });
        // input输入框获取焦点后移除之前的错误提示信息
        $myForm.find("input[type!='submit']").on("focus", function () {
          $(this).next(".error").text("");
        })
      }
      // 文档树就绪后执行
      $(document).ready(function () {
        myValidation();
      });
    </script>
    </body>
    </html>
    登陆校验示例

    与window.onload的区别:

    • window.onload()函数有覆盖现象,必须等待着图片资源加载完成之后才能调用
    • jQuery的这个入口函数没有函数覆盖现象,文档加载完成之后就可以调用(建议使用此函数)

    动画效果

    // 基本
    show([s,[e],[fn]])
    hide([s,[e],[fn]])
    toggle([s],[e],[fn])
    // 滑动
    slideDown([s],[e],[fn])
    slideUp([s,[e],[fn]])
    slideToggle([s],[e],[fn])
    // 淡入淡出
    fadeIn([s],[e],[fn])
    fadeOut([s],[e],[fn])
    fadeTo([[s],o,[e],[fn]])
    fadeToggle([s,[e],[fn]])
    // 自定义(了解即可)
    animate(p,[s],[e],[fn])

      

    each(类似for循环)

      jQuery.each(collection, callback(indexInArray, valueOfElement)):

      描述:一个通用的迭代函数,它可以用来无缝迭代对象和数组。数组和类似数组的对象通过一个长度属性(如一个函数的参数对象)来迭代数字索引,从0到length - 1。其他对象通过其属性名进行迭代。

    li =[10,20,30,40]
    $.each(li,function(i, v){
      console.log(i, v);//index是索引,ele是每次循环的具体元素。
    })

    输出:
    010
    120
    230
    340

    .each(function(index, Element)):

    描述:遍历一个jQuery对象,为每个匹配元素执行一个函数。

    .each() 方法用来迭代jQuery对象中的每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数)。由于回调函数是在当前DOM元素为上下文的语境中触发的,所以关键字 this 总是指向这个元素。

    data()

    可以临时存储小小数据,界面看不到(不推荐用)

  • 相关阅读:
    双六
    除法取模
    欧拉函数及费马小定理
    基础模运算
    Leeetcode--581. Shortest Unsorted Continuous Subarray
    Codeforces Round #541--1131F. Asya And Kittens(基础并查集)
    leetcode--200. Number of Islands
    leetcode--21. Merge Two Sorted Lists
    leetcode--155. Min Stack
    Codeforces Round #539--1113B
  • 原文地址:https://www.cnblogs.com/xiaowangba9494/p/11502428.html
Copyright © 2020-2023  润新知