JQuery

JQuery

一、概念

JQuery是一个优秀的JavaScript代码库(框架),用于简化JavaScript和HTML的操作(简化文档操作),宗旨是“Write less, Do more”。

JQuery或者其他的一些JavaScript框架的本质,就是一些JavaScript文件,在文件里面封装了一些原生的JavaScript代码,简化操作。

二、使用步骤

  1. 下载jQuery
  2. 导入jQuery的js文件
  3. 使用

三、js对象与jQuery对象的转换

由于js对象与jQuery对象是不同的,两者之间的方法并不是通用的,有时候为了使用js对象或者jQuery对象的方法,要对两者进行转换。

  1. jQuery对象------>js对象:jQuery对象[索引]或者jQuery.get(索引)

  2. js对象------>jQuery对象:$(js对象)

    <script>
        var divs = document.getElementsByTagName("div");
        var $divs = $("div");//jQuery的方法获得所有名为div的元素
    
        alert(divs.length);// 当做数组使用
        alert($divs.length);// 当做数组使用
    
        for (var i = 0; i < divs.length; i++) {
            divs[i].innerHTML = "aabbcc";
        }
    
        $divs.html("112233");// 设置所有的元素的标签体的内容
    
    
        $(divs).html("fffggg");/*js对象------>jQuery对象:$(js对象)*/
        
        // jQuery对象------>js对象:jQuery对象[索引]或者jQuery.get(索引)
        $divs.get(0).innerHTML = "hhjjj";
        $divs[1].innerHTML = "hhjjj";
    
    </script>
    

四、jQuery的选择器

选择器是为了筛选具有相似特征的元素(标签)

前置知识

  1. 事件绑定:click()、submit()、blur()、mouseout()、mouseover()等

    $("#b1").click(function () {
        alert("hahah");
    });
    
  2. 入口函数:相当于window.onload

    与window.onload不同的是:window.onload()在一个页面中只能定义一次,因为window.onload只能赋值为一个function对象,但是$(function(){ });可以定义多次

    $(function () {
    	// 窗口加载之后执行的代码
    });
    
  3. 样式控制:css方法

    $("#div1").css("backgroundColor", "pink");
    

1. 基本选择器

  1. 元素选择器
    • $("html的标签名"):获得所有与标签名想匹配的元素
  2. id选择器
    • $("#id属性值"):获得与指定id属性值相匹配的元素
  3. 类选择器
    • $(".class属性值"):获得与指定class属性值相匹配的元素
  4. 并集选择器
    • $("选择器1,选择器2……"):获取所有这些选择器

2. 层级选择器

  1. 后代选择器
    • $("A B"):获取A元素内所有的B元素(包括孙子元素)
  2. 字选择器
    • $("A > B"):获取A元素内的所有B子元素(只获取儿子元素)

3. 属性选择器

  1. 属性名称选择器

    • $("A[属性名]"):获取包含指定属性名的A元素
  2. 属性选择器

    • $("A[属性名='属性值']"):获取包含特定属性名、属性值的A元素

      $("div[title='div1']") // 获取属性title值为div1的元素
      $("div[title^='div1']") // 获取属性title值以div1开始的元素
      $("div[title$='div1']") // 获取属性title值以div1结束的元素
      $("div[title*='div1']") // 获取属性title值包含div1的元素
      
  3. 复合属性选择器

    • $("A [ 属性名1='属性值1 '][ 属性名2='属性值2 ']...."):获取匹配多个属性名、属性值的元素

4.过滤选择器

  1. 首元素选择器

    • :first 获得选择的元素的第一个选择器

      $("div:first")// 获取第一个div
      
  2. 尾元素选择器

    • :last 获得选中的元素的最后一个选择器

      $("div:last")// 获取最后一个div
      
  3. 非元素选择器

    • :not(selector) 不包括指定元素的选择器

      $("div:not(.one))// 获得class不为one的div选择器
      
  4. 偶数选择器

    • :even 获得选中的元素的偶数元素,从0开始

      $("div:even")// 获得选中的元素的偶数元素div
      
  5. 奇数选择器

    • :odd 获得选中的元素的奇数元素,从0开始

      $("div:odd")// 获得选中的元素的奇数元素div
      
  6. 等于索引选择器

    • :eq(index) 获得索引等于index的选择器

      $("div:eq(3)")// 获得索引等于3的div元素
      
  7. 大于索引选择器

    • :gt(index) 获得索引大于index的选择器

      $("div:gt(3)")// 获得索引大于3的div元素
      
  8. 小于索引选择器

    • :lt(index) 获得索引小于index的选择器

      $("div:lt(3)")// 获得索引小于3的div元素
      
  9. 标题选择器

    • :header 获得标题(h1-h6)元素

      $(:header)// 获得所有的标题元素 
      

5.表单过滤选择器

  1. 可用元素选择器
    • :enabled 获得可用元素
  2. 不可用元素选择器
    • :disabled 获得不可用元素
  3. 选中选择器
    • :checked 获得单选、复原框选中的元素
  4. 选中选择器
    • selected 获得下拉选框选中的的元素

五、DOM操作

1. 内容操作

  1. html():获取、设置标签体内容
  2. text() :获取、设置标签体内纯文本内容
  3. val():获取、设置元素的val值

2. 属性操作

  1. 通用属性操作

    • attr():获取、设置元素的属性值

    • removeAttr():删除属性

    • prop():获取、设置元素的属性值

    • removeProp():删除属性

      var name = $("#bj").attr("name"); // 获取name属性的属性值
      $("#bj").attr("name", "北京");// 设置name属性的属性值
      var prop = $("#hobby").prop("checked");// 获取属性值,checked是固有属性
      

    注意:attr与prop的区别,当操作的是元素的固有属性,用prop,操作元素的自定义属性,用attr

  2. 对class属性的操作

    • addClass():添加class属性值
    • removeClass():移除class属性值
    • toggleClass():切换class属性,toggle("didi"),如果元素对象有class=“didi”,就删除class属性,如果没有就添加该class属性

3.CRUD(增删改查)操作

  1. append():父元素将子元素追加到末尾
    • 对象1.append(对象2):将对象2追加到对象1的内部,并且是添加到末尾
  2. prepend():父元素将子元素追加到开头
    • 对象1.prepend(对象2):将对象2追加到对象1的内部,并且是添加到开头
  3. appendTo():
    • 对象1.appendTo(对象2):将对象1追加到对象2的内部,并且是添加到末尾
  4. prependTo():
    • 对象1.prependTo(对象2):将对象1追加到对象2的内部,并且是添加到开头
  5. after():添加元素到到元素后面
    • 对象1.after(对象2):将对象2添加到对象1后面,他们是兄弟关系
  6. before():添加元素到元素前面
    • 对象1.before(对象2):将对象2添加到对象1前面,他们是兄弟关系
  7. insertAfter():
    • 对象1.insertAfter(对象2):将对象1添加到对象2后面,他们是兄弟关系
  8. insertBefore():
    • 对象1.insertBefore(对象2):将对象1添加到对象2前面,他们是兄弟关系
  9. remove():移除元素
    • 对象.remove():移除对象
  10. empty():清空后代元素
    • 对象.empty():清空对象的所有后代元素,但是保留当前对象,当前对象的属性节点

六、jQuery动画

jQuery三种方式显示和隐藏元素

1. 默认方式显示和隐藏元素

  1. show([speed, [easing], [fn]])

    • 参数:
      • speed:动画的速度,有三个预定义的值(“slow”,“normal”, “fast”),还可以传递毫秒值
      • easing:动画切换的效果,默认是swing,还有一个值是linear
        • swing:慢----快-----慢
        • linear:匀速
        • fn:动画结束后执行的function对象
  2. hide([speed, [easing], [fn]])

  3. toggle([speed], [easing], [fn])

    function hideFn() {
        $("#showDiv").hide("slow", "swing", function () {
            alert("隐藏了");
        });
        $("#showDiv").hide("slow", "swing");
        $("#showDiv").slideDown("slow");
        $("#showDiv").fadeOut("slow");
    }
    

2. 滑动方式显示和隐藏元素

  1. slideDown([speed], [easing], [fn])
  2. slideUp([speed, [easing], [fn]])
  3. slideToggle([speed], [easing], [fn])

3. 淡入淡出方式显示和隐藏元素

  1. fadeIn([speed], [easing], [fn])
  2. fadeOut([speed], [easing], [fn])
  3. fadeToggle([speed, [easing], [fn]])

七、遍历

1. js的遍历方式:for、while、do while

$(function () {
    var citys = $("#city > li");
    for (var i = 0; i < citys.length; i++) {
        alert(i + " : " + citys[i].innerHTML);
    }
});

2. jQuery的三种遍历方式

  1. jQuery对象.each(callback);

    1. callback是回调函数,可以在函数体return true,相当于一般循环的continue,return false相当于break

    2. callback的实体就是callback(index,element):index是遍历的索引,element是遍历集合获得的对象

      $("#city > li").each(function (index, element) {
          if ($(element).html() == "天津") {
              return true;
          }
          alert(index + " : " + $(element).html());
      });
      
    3. $.each(jQuery对象, [callback]):用法和上一个类似,回调函数是一样的,又称全局遍历

      $.each($("#city > li"), function () {
          alert($(this).text());
      });
      
  2. for.....of:jQuery3.0之后的版本提供的遍历方式

八、jQuery事件绑定方式

1. jQuery标准的事件绑定

jQuery对象.事件方式(回调函数):回调函数里编写发生事件后执行的逻辑

// 单击事件
$("#name").click(function () {
    alert("我被点击了");
});
// 鼠标来了
$("#name").mouseover(function () {
    alert("鼠标来了");
});
// 鼠标走了
$("#name").mouseout(function () {
    alert("鼠标走了");
});

2. on、off绑定解绑事件

  1. jQuery对象.on("事件名称", 回调函数)

  2. jQuery对象.off("事件名称")

    $(function () {
        $("#btn").on("click", function () {
            // 单击事件的执行逻辑
            alert("click...");
        });
    
        // 当btn2被单击了,就解除btn的单击事件
        $("#btn2").click(function () {
           $("#btn").off("click");
           // off不传参数,解除btn上绑定的所有事件
            $("#btn").off();
        });
    });
    

3. 事件切换:toggle

jQuery对象.toggle(fn1, fn2...):fn1、fn2、...切换执行

注意:jQuery1.9版本之后就删除了该方法,但是要使用可以加入插件jQuery Migrate恢复

$(function () {
    $("#btn").toggle(function () {
        $("#myDiv").css("backgroundColor", "pink");
    }, function () {
        $("#myDiv").css("backgroundColor", "blue");
    });
});

九、插件

  1. $.fn.extend(object):增强通过jQuery获取的对象的功能,定义之后jQuery获取的对象可以调动里面的方法,获得的对象如:$("#id")、$(".class属性值")等

    $.fn.extend({
        // 定义一个check防方法,该方法是所有jQuery对象都可以调用的
        check:function () {
            this.prop("checked", true);
        },
    
        uncheck:function () {
            this.prop("checked", false);
        }
    });
    
    $(function () {
        $("#btn-check").click(function () {
        	// 获得的jQuery对象调用check方法
            $("input[type='checkbox']").check();
        });
        $("#btn-uncheck").click(function () {
            $("input[type='checkbox']").uncheck();
        });
    });
    
  2. $.extend(object):增强jQuery自身的功能,jQuery自身就是$、jQuery,定义之后$可以直接调用里面的方法

    $.extend({
       max:function (a, b) {
           return a > b ? a : b;
       },
       
       min:function (a, b) {
           return a < b ? a : b;
       }
    });
    
    alert($.max(3, 4));
    alert($.min(3, 4));
    
原文地址:https://www.cnblogs.com/zhuobo/p/10838754.html