jQuery 简介

  • 在项目中引入jQuery:

    • jQuery官网下载jQuery包:jquery-3.2.1.min.js
    • 将下载的jQuery包添加到项目目录中
    • 在标签下添加jQuery引用:<script src='jquery-3.2.1.min.js'></script>
  • jQuery和$没有区别,具体体现在:
    • console.log($===jQuery)返回true
    • $('div')jQuery('div')效果相同
  • jQuery文件的差异:
    • jquery-xx.js:代码格式清晰,可读性高,参数命名规范,建议在开发时使用
    • jquery-xx.min.js:代码格式混乱,可读性差,参数命名不规范,但占空间小,建议发布上线时使用
  • jQuery的特性:
    • 链式编程:jQuery中的不同方法可以在一条语句中相继进行

      • jQuery中的所有设置方法,最后都会return this;
      • jQuery中的所有获取方法,最后都会end();,返回匹配元素之前的状态
    • 隐式迭代:jQuery可以直接在数组对象上进行操作,而不需要遍历数组中的每一个元素

jQuery 基础语法

  • 入口函数(写法1):$(document).ready(function() { ...... });
  • 入口函数(写法2):$(function() { ...... });
  • 页面加载完成后执行的方法:$(window).ready(function() { ...... });
  • 获取元素:var jqdom = $('div/.box/#box01');
  • 元素的点击事件:jqdom.click(function() { ...... });
  • 显示元素:jqdom.show();
  • 在1秒钟的动画之后显示元素:jqdom.show(1000);
  • 隐藏元素:jqdom.hide();
  • 在1秒钟的动画之后隐藏元素:jqdom.hide(1000);
  • 设置innerHTML:jqdom.html('hahahaha');
  • 为元素设置样式(JSON):jqdom.css({"width":100,"background-color":"red"});
  • each遍历:$('li').each(function(index, element){ ...... });

jQuery 和JS中DOM的区别

  • 使用原生JS获取到的DOM就是DOM对象本身
  • 使用jQuery获取到的DOM是一个数组,DOM对象仅仅是这个数组中的一部分
  • 原生JS和jQuery中DOM的转换:
    • 原生JS对象转换成jQuery对象:jqdom = $(jsdom);
    • jQuery对象转换成原生JS对象:jsdom = jqdom[0];或者jsdom = jqdom.get(0);

jQuery 选择器

  • 基本选择器:$("div")$(".box")$("#box01")
  • 层级选择器:$("#box01 li")#box01>ul>li
  • 过滤选择器:$("li:eq(2)")$("li:odd")$("li:even")
  • 筛选选择器:
    • $("#box01").find("li"):获取id为box01的盒子中的所有li标签(子子孙孙都算)
    • $("#box01").children():获取id为box01的盒子的所有子元素(仅子元素)
    • $("#box01").children("ul"):获取id为box01的盒子的ul子元素(仅子元素)
    • $("#box01").children().eq(2):获取id为box01的盒子下的第二个子元素(仅子元素)
    • $("#box01").siblings():获取id为box01的盒子的所有兄弟元素
    • $("#box01").next():获取id为box01的盒子的下一个兄弟元素
    • $("#box01").prev():获取id为box01的盒子的上一个兄弟元素
    • $("#box01").parent():获取id为box01的盒子的父元素

jQuery 样式操作

  • 设置单个样式:$("#box01").css("color", "red");
  • 设置多个样式:$("#box01").css({"color":"red", "width":100});
  • 获取样式值:var width = $("box01").css("width");
  • 添加类样式:$("#box01").addClass("myClass");
  • 移除类样式:$("#box01").removeClass("myClass");
  • 有无类样式:var flag = $("#box01").hasClass("myClass");
  • 切换类样式:$("#box01").toggleClass("myClass");

jQuery 属性操作

  • 添加属性:$("li").attr("aaa", 111);
  • 获取属性:var aaa = $("li").attr("aaa");
  • 移除属性:$("li").removeAttr("aaa");
  • 当涉及到值为boolean类型的属性时,需要使用$("checkbox").prop("checked", true);
  • 获取表单value属性的值:$("input").val();
  • 设置表单value属性的值:$("input").val("XXXX");
  • 获取表单中的文本:$("input").text();
  • 设置表单中的文本:$("input").text("XXXXX");

jQuery 尺寸位置操作

  • 获取宽度:var width = $("div").width();
  • 设置宽度:$("div").width(200);
  • 获取高度:var height = $("div").height();
  • 设置高度:$("div").height(200);
  • 上面方法获取到的宽度和高度与padding、margin、border均无关
  • 获取距离网页顶端/左端的距离:var top/left = $("div").offset().top/left;
  • 获取距离父盒子顶端/左端的距离:var top/left = $("div").position().top/left;,只与left、top属性有关,与margin、padding都无关
  • offset和position只能获取,不能设置
  • 获取页面被卷去的距离:var top/left = $(document).scrollTop()/scrollLeft();
  • 设置页面被卷去的距离:$(document).scrollTop(100)/scrollLeft(100);

jQuery 动画

  • 显示/隐藏动画:

    • 显示、隐藏的方法:show()hide()toggle(),可以有很多参数种类
    • $("#box01").show();:直接显示
    • $("#box01").show(1000);:通过一个1秒的动画显示出来
    • $("#box01").show("fast");:可以填入fast、normal和slow
    • $("#box01").show(XX, function() { ...... });:显示完成后回调函数
  • 滑入/滑出动画:
    • 滑入、滑出的方法:slideDown()slideUp()slideToggle()
    • 滑入、滑出操作中的参数种类与显示、隐藏操作中的相同
  • 淡入/淡出动画:
    • 淡入、淡出的方法:fadeIn()fadeOut()fadeToggle()
    • 淡入、淡出操作中的参数种类与显示、隐藏操作中的相同
    • 这里可以支持设置淡入/淡出的透明度,方法:fadeTo(XX, 0.5, function() { ... })
  • 自定义动画:
    • 语法:JQ对象.animate(参数JSON串, 毫秒值, 回调函数);
    • 当前jQuery版本支持的参数见这个网页
  • 停止动画:
    • 停止动画的方法:stop(),可以有两个参数,如果不写,则默认都是false
    • 第一个参数:后续动画是否不再执行
    • 第二个参数:是否要执行完当前动画

jQuery 节点操作

  • 创建节点:

    • 方法1:var node = $("\<li\>哈哈哈\<\/li\>");
    • 方法2:var node = $("ul").html("\<li\>嘻嘻嘻\<\/li\>");
  • 添加节点:
    • 方法1:$("ul").append(newLi);,将新元素添加到容器最后面
    • 方法2:newLi.appendTo($("ul"));
    • 方法3:$("ul").prepend(newLi);,将新元素添加到容器最前面
    • 方法4:newLi.prependTo($("ul"));
    • 方法5:$("oldLi").after(newLi);,将newLi添加到oldLi之后
    • 方法6:$("oldLi").before(newLi);,将newLi添加到oldLi之前
  • 清空节点:
    • 方法1:$("ul").html("");
    • 方法2:$("ul").empty();
    • 方法3:$("li").remove();,这种方法用于自己清除自己
  • 复制节点:var newNode = oldNode.clone();

jQuery 事件机制

  • 事件绑定:

    • 简单事件绑定:与JS中的方法相同,去掉on,改成方法,如onclick -> click()
    • bind方式绑定事件:$('.box').bind('click mouseenter', function() { ...... });
    • delegate方式绑定事件:$(document).delegate('.box', 'click mouseenter', function() { ...... });
    • on方式绑定事件:
      • 语法:$(父容器).on('事件', '子元素', JSON串, function(event) {}),代码如下:
        $(document).on('click mouseenter', '.box', {'name': 111}, function(e) {
        alert(e.data.name); // 通过event.data可以获取JSON串中传递的参数
        });
      • 子元素参数可以不写,如果不写,则视为父容器触发事件
      • JSON串参数可以不写,如果不写,则视为没有传递参数
  • 事件解绑:
    • unbind方式解绑事件:$('.box').unbind('mouseenter');
    • undelegate方式解绑事件:$(document).undelegate('.box', 'mouseenter');
    • off方式解绑事件:$('document').off('mouseenter', '.box');
    • 一般情况下,bind与unbind、delegate与undelegate、on与off是一一对应的
  • 事件触发:
    • 事件触发:当达到某种要求之后触发事件
    • 语法1:$('.box').click();,这种方法只能触发系统方法,如click等
    • 语法2:$('.box').trigger('myevent');,这种方法可以触发自定义方法,代码如下:
      var num = 0;
      var timer = null;
      $(document).ready(function() {
      $('div').on('myevent', function() {
      alert('number reached 30...');
      });
      timer = setInterval(function() {
      console.log(1);
      num++;
      if(num === 30) {
      $('div').trigger('myevent');
      }else if(num > 30) {
      clearInterval(timer);
      }
      }, 100);
      });
    • 语法3:$('.box').triggerHandler('focus');,同trigger,但不会触发浏览器默认事件
    • 以上三种触发方法中,第一、第二种会触发浏览器事件,第三种不会触发浏览器事件
    • 触发浏览器事件:例如语法3中的focus,当用前两种方法触发后,会执行focus方法获取焦点,而使用第三种方法触发后,不会执行focus方法获取焦点
  • jQuery事件对象:
    • $(document).on('click', '.box', {}, function(e) {});,一些事件对象如下
    • e.data:传入事件的参数
    • e.currentTarget:触发事件的元素,jQuery的DOM对象
    • e.target:触发事件的元素,javascript的DOM对象
    • e.pageX和e.pageY:发生事件时鼠标距离文档顶部和左部的距离
    • e.type:事件类型,click、mouseenter等
    • e.which:鼠标按键类型,左键1,中键2,右键3
    • e.keyCode:按下键盘的键值,如果没有按键盘则返回undefined

jQuery 多库共存

  • 多库共存:当多个库中的类型或方法发生冲突时,需要用到多库共存
  • 例如:当项目中有多个jQuery版本时,版本之间会发生覆盖(通常是最后定义的版本覆盖之前的所有版本),如果想要使用之前版本的特性,则需要设置当前版本放弃某个类型或方法的使用权
  • 多库共存的解决方案代码(本例中设置对$的使用权):
    var my$ = $.noConflict(true);
    // 让当前版本放弃$符的使用权,同时将当前版本的$符号重定义为my$
    // 以后如果想用当前版本的$功能,则可以使用my$代替,如:my$(document)
  • 补充:查看某方法或类型的版本(如$):console.log($.fn.jquery);

jQuery 插件

  • 可以去这个网站搜索、下载搜许插件
  • 例如:原生jQuery不支持颜色变换动画,因此,我们需要使用插件来实现这个功能
  • 在网站搜索框中输入颜色动画,点击搜索,即可看到所有颜色动画插件
  • 每个插件中都有演示按钮,点击可以查看插件效果
  • 点击立即下载即可下载插件
  • 下载后解压,用Sublime等工具打开index.html文件,查看插件用法

【前端】之jQuery基础知识的更多相关文章

  1. JQuery基础知识梳理篇

    这周没事,优化线上项目,因为前端都在赶项目,我又若菜.于是前端数据展示也要自己来.看javascript看到吐,决定梳理一下Jquery基础知识.敲黑板) 闲扯结束,进入正题. 选择器 介绍 jque ...

  2. jquery基础知识汇总

    jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...

  3. JQuery基础知识(1)

    JQuery基础知识(1) 对JQuery学习中遇到的小细节进行了整理和总结 1.JQuery hide()和show()方法,分别对选中的元素进行隐藏和显示,语法:hide()和show分别有对应的 ...

  4. JQuery基础知识(2)

    JQuery基础知识(2) JQuery滑动效果 1. JQuery slideDown(); 语法: $(selector).slideDown(speed,callback); 可选的 speed ...

  5. 0417 jQuery基础知识

    jQuery基础知识 jQuery需要引入一个js文件,并且这个文件在所有js代码之前(包括引入的其他js文件) 基础操作(对比js): 1.找标签: js:document.getElement.. ...

  6. 【JQuery基础知识/statusCode(状态码)】---初学者必备

    今天,给大家分享一下JQuery的基础知识,简单介绍一下JQuery高级_Ajax,和我们常见的一些statusCode(状态码)~~~ 如果存在错误,请大家多多指正留言~小女子在此谢过! 一.JQu ...

  7. jQuery基础知识总结

    1.  jQuery基本概念介绍             1.1 什么是jQuery 一个javascript库,把常用方法写到一个js文件中,需要的时候直接调用即可 学习jQuery就是学习一些方法 ...

  8. 【Python全栈-jQuery】jQuery基础知识

    前端学习之jQuery 一. jQuery是什么? <1> jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. < ...

  9. jQuery基础知识准备

    一. 代码风格在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号"$"来起始的.而这个"$"就是jQuery当中最重要且独有的对象:jQu ...

随机推荐

  1. Logstash 安装及简单实用(同步MySql数据到Elasticsearch)(Linux)

    1.下载logstash wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz 2. 解压logstas ...

  2. MYSQL-LINUX 安装步骤

    https://www.cnblogs.com/dengshihuang/p/8029092.html   5.7版本安装步骤 1.官网下载mysql二进制文件,匹配自己的linux版本: wget ...

  3. 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API

    1. 使用ASP.NET Core 3.x 构建 RESTful API - 1.准备工作 什么是REST REST一词最早是在2000年,由Roy Fielding在他的博士论文<Archit ...

  4. 死磕 java线程系列之终篇

    (手机横屏看源码更方便) 简介 线程系列我们基本就学完了,这一个系列我们基本都是围绕着线程池在讲,其实关于线程还有很多东西可以讲,后面有机会我们再补充进来.当然,如果你有什么好的想法,也可以公从号右下 ...

  5. NOIP原题 斗地主(20190804)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下:3<4&l ...

  6. 股票交易——单调队列优化DP

    题目描述 思路 蒟蒻还是太弱了,,就想到半个方程就GG了,至于什么单调队列就更想不到了. $f[i][j]$表示第$i天有j$张股票的最大收益. 那么有四种选择: 不买股票:$f[i][j]=max( ...

  7. AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层

    AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层 AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层我理解的图层的作用大概是把 ...

  8. Elastic Stack 开源的大数据解决方案

    目的 本文主要介绍的内容有以下三点: 一. Elastic Stack是什么以及组成部分 二. Elastic Stack前景以及业务应用 三. Elasticsearch原理(索引方向) 四. El ...

  9. spark安装配置

    一.下载解压 二.配置 (假设已经配置了Java.Hadoop) 1.环境变量 2.spark配置 进入spark安装目录,复制文件 编辑spark-env.sh文件,在文件中添加如下信息(括号中路径 ...

  10. Python 常用模块系列(2)--time module and datatime module

    import time print (help(time)) #time帮助文档 1. time模块--三种时间表现形式: 1° 时间戳--如:time.time()  #从python创立以来,到当 ...