概念

一个JavaScript框架,简化JS开发

  • Javascript框架:本质上就是一些js文件,封装了js的原生代码

    快速入门

    步骤

  • 下载JQuery

    • jquery-xxx.js 与 jquery-xxx.min.js 的区别
      • Jquery-xxx.js : 开发版本【给程序员看,有良好的缩进和注释】
      • Jquery-xxx.min.js:生成版本。程序中使用,没有缩进,体积小,加载快
  • 导入JQuery的js文件
  • 使用

var $divs = $(“div”);
alert($divs); //也可以当作数组使用

JQuery对象和JS对象的区别

1-JQ对象在操作时,更加方便
2-JQ对象和js对象方法不通用
3-两者相互转换
jq —> js : jq对象[索引] 或者 jq对象.get(索引)
js —> jq : $(js对象)

选择器

筛选具有相似特征的元素(标签)

基本语法

  • 事件绑定

//1-获取b1按钮
$(“#b1”).click(function () {
alert(“111”);
})

  • 入口函数

    1. //jquery入口函数(dom文档加载完毕后执行该函数中的代码)
    2. $(function () {
    3. ...
    4. });
    5. /* window.onload 和 $(function) 区别
    6. window.onload只能定义一次,后面的会覆盖前面的
    7. $(function)可以定义多次
    8. */
  • 样式控制

    1. $(function () {
    2. // $("#div1").css("background-color","red");
    3. $("#div1").css("backgroundColor","pink")
    4. })

    分类

    基本选择器

  • 标签选择器(元素选择器

    • 语法: $(“html标签名”) 获得所有匹配标签名称的元素
  • id选择器
    • 语法:$(“#id的属性值”)获得与指定id属性值匹配的元素
  • 类选择器
    • 语法:$(“.class的属性值”) 获得与指定的class属性值匹配的元素
  • 并级选择器:

    • 语法:$(“选择器1,选择器2…”) 获得多个选择器选中的所有元素

      层级选择器

  • 后代选择器

    • $(“A B”) 选择A元素内部所有的B元素
  • 子选择器

    • $(“A>B”) 选择A元素内部的所有B子元素

      属性选择器

  • 属性名称选择器

    • $(“A[属性名]”) 包含指定属性的选择器
  • 属性选择器
    • $(“A[属性名=’值’]”) 包含指定属性等于指定值的选择器
    • 值以xx开始:属性名^=xx
    • 值以xx结束: 属性名$=xx
    • 值包含xx: 属性名*=xx
  • 复合属性选择器

    • $(“A[属性名=’值’][..]…”) 包含多个属性条件的选择器

      过滤选择器

  • 首选择器

    • :first
  • 尾选择器
    • :last
  • 非选择器
    • :not(选择器)
  • 偶数选择器
    • :even 从0开始计数
  • 奇数选择器
    • :odd 从0开始计数
  • 等于索引选择器
    • :eq(index) 等于指定索引
  • 大于索引选择器
    • :gt(index) 大于指定索引
  • 小于索引选择器
    • :lt(index) 小于指定索引
  • 标题选择器

    • :header 获得标题(h1~h6)

      表单过滤选择器

  • 可用元素选择器

    • :enabled -> $(“input[type=’text’]:enabled”)
  • 不可用元素选择器
    • :disabled
  • 选中选择器
    • :checked -> 单选/复选框选中的元素
  • 选中选择器

    • :selected -> 下拉框选中的元素 -> $(“#job > option:selected”)

      DOM操作

      内容操作

  • html():获取/设置元素的标签体内容

  • text(): 获取/设置元素的标签体纯文本内容
  • val(): 获取/设置元素的value属性值

    属性操作

  • 通用属性操作

    • attr():获取/设置元素的属性
    • removeAttr():删除属性
    • prop():获取/设置元素的属性
    • removeProp():删除属性
    • attr和prop的区别
      • 如果操作的是元素的固有属性,则建议使用prop
      • 如果操作的是自定义的属性,则建议使用attr
  • 对class属性的操作

    • addClass():添加class属性值
    • removeClass():删除class属性值
    • toggleClass():切换class属性
      • toggleClass(“one”) ->判断如果元素对象上存在class=”one”,则将属性值one删除,如果元素对象上不存在,则添加one

        CRUD操作

  • append() :父元素将子元素追加到末尾

    • 对象1.append(对象2) : 将对象2添加到对象1元素内部,并且在末尾
  • prepend():父元素将子元素添加到开头
  • appendTo():
    • 对象1.appendTo(对象2):将对象1添加到对象2内部(和append方向相反)
  • prependTo()
  • after() : 添加元素到元素后边
    • 对象1.after(对象2):将对象2添加到对象1后边 【兄弟关系】
  • before():
  • insertAfter() :和after和before一样 只是方向不同
  • insertBefore()
  • remove() : 移除元素【自杀】
    • 对象.remove() 将对象删除
  • empty() 清空元素的所有后代元素,保留当前对象和属性节点

动画

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

    默认显示和隐藏

  • show([speed,[easing],[fn]])

    • 参数:
      • speed:动画速度,选项【”slow”,”normal”,”fast”】或毫秒值(如:1000)
      • easing:用来指定切换效果,默认’swing’,可用参数’linear’
        • swing: 慢-快-慢
        • linear 匀速
      • fn:动画完成时执行的函数,传递function对象
  • hide([speed,[easing],[fn]])
  • toggle([speed,[easing],[fn]])

    滑动显示和隐藏

  • slideDown([speed,[easing],[fn]])

  • slideUp([speed,[easing],[fn]])
  • slideToggle([speed,[easing],[fn]])

    淡入淡出显示和隐藏

  • fadeIn([speed,[easing],[fn]])

  • fadeOut([speed,[easing],[fn]])
  • fadeToggle([speed,[easing],[fn]])

    遍历

  • js的遍历方式

    • for(初始值;循环结束条件;步长)
  • jq的遍历方式

    • jq对象.each(callback)

      citys.each(function(index,element){
      //alert(this.innerHTML);
      
      //alert(index+":"+element.innerHTML);
      alert(index+":"+$(element).html());
      });
      
    • $.each(object,[callback])

      $.each(citys,function(){
      alert($(this).html();
      });
      
    • for..of: 需要高版本

      for(li of citys){
      alert($(li).html());
      }
      

事件绑定

  • jquery标准的绑定方式

    • jq对象.事件方法(回调函数);
      $("#name").click(function(){
      alert('回调函数');
      });
      //click -> 事件方法
      
  • on绑定事件/off接触绑定

    • jq对象.on(“事件名称”,回调函数)
    • jq对象.off(“事件名称”)
      $("#btn").on("click",function(){
      alert('..');
      })
      $("#btn2").click(function(){
      $("#btn").off("click");
      });//用btn2来解除btn的事件,如果off不传递事件名,则清除所有
      
  • 事件切换:toggle

    • jq对象.toggle(fn1,fn2…)
      • 当单击jq对象对应的组件后,会执行fn1.第二次点击会执行fn2…..

案例

插件

增强jquery功能

  • 实现方式:
    • $.fn.extend(object)
      • 增强通过JQuery获取的对象的功能 $(“#id”)
    • $.extend(object)
      • 增强JQuery对象自身的功能 $/JQuery
$.fn.extend({
    //定义了一个check()方法,所有的jq对象都可以调用该方法
    check:function(){
        alert(123);
    }
});

$(function(){
    //获取按钮
    $("#btn-check").check();
    //该方法调用之前定义的check
});

第二种全局方法
$.extend({
    max:function(a,b){
        return a>=b? a:b;
        }
})

//调用全局方法
var max = $.max(4,3);