JQuery学习笔记

1、对JQuery的认识

jQuery的好处:

  1. 对HTML文档遍历和操作、事件处理、动画以及Ajax变得更简单
  2. 可以写多个入口函数
  3. 相比JavaScript可以写得更少,做得更多
  4. 通过jQuery查找DOM元素要比原生js快捷很多
  5. jQuery其实就是一个封装了很多方法的JS库,里面封装了一大堆的方法便于开发

原生JS的缺点:

  1. 不能添加多个入口函数(window.onload),如果添加了,后面的会把前面的覆盖。
  2. 原生JS的api名字太长,代码冗余
  3. 有的属性或者方法,有浏览器兼容问题
  4. 容错率较低,前面代码出了问题,后面的代码执行不了

jQuery的官网:http://jquery.com/

2、关于JQuery的版本

官方下载地址:http://jquery.com/download/

大版本分类:

  • 1.x版本:能够兼容IE678浏览器
  • 2.x版本:不能兼容IE678浏览器
  • 3.x版本:不能兼容IE678浏览器,更加的精简(在国内不流行,因为国内使用jQuery的主要目的就是兼容IE678)

关于压缩和未压缩版:

  • jquery-1.12.4.min.js:压缩版本,适用于生产环境,因为文件比较小,去除了注释、换行、空格等东西,但是基本没有颗阅读性。
  • jquery-1.12.4.js:未压缩版本,适用于学习与开发环境,源码清晰,易阅读。

3、JQuery入口函数

使用jQuery的步骤:

  1. 下载并引入jQuery库
  2. 编写入口函数
  3. 找到需要操作的元素(用jQuery选择器),去操作该元素(添加属性,样式等)
  4. 实现功能

jQuery入口函数的两种方法

//第一种写法
$(document).ready(function(){
});
//第二种写法(推荐使用)
$(function(){
});

原生JS和jQuery入口函数加载模式的区别:

  1. 原生JS会等到DOM元素加载完毕,并且图片也加载完毕才会执行
  2. jQuery会等到DOM元素加载完毕,但不会等到图片也加载完毕就会执行
  3. 原生的JS如果编写了多个入口函数,后面编写的会覆盖前面编写的(不能添加多个入口函数)
  4. jQuery中可以编写多个入口函数,后面的不会覆盖前面的

3.1 jQuery核心函数

//$();就代表调用jQuery的核心函数

<script src="js/jquery-1.12.4.js"></script>
<script>
//接收一个函数:
$(function(){
	alert("hello");
	//1.接收一个字符串选择器
	//返回一个jQuery对象,对象中保存了找到的DOM元素
	var $box1 = $(".box1");
	var $box2 = $("#box2");
	console.log($box1);
	console.log($box2);
	//2.接收一个字符串代码片段
	//返回一个jQuery对象,对象中保存了创建的DOM元素
	var $p = $("<p>这是一个段落</p>");
	console.log($p);
	$box1.append($p);
	//3.接收一个DOM元素
	//会被包装成一个jQuery对象返回给我们
	var span = document.getElementsByTagName("span")[0];
	console.log(span);//原生dom对象
	var $span=$(span);
	console.log($span);
});
</script>
<body>
<div class="box1"><div>
<div id="box2"></div>
<span>这是一个span</span>
</body>

补充:

  1. 如果报了这个错误:$ is not defined,就说明没有引入jQuery文件。
  2. $等价于jQuery,是一个函数。传递参数不同,效果也不一样。
  3. 如果参数传递的是一个匿名函数,则就是入口函数$(function(){})。
  4. 如果参数传递的是一个字符串,则是选择器$(’#one’);如果字符串是标签,则会创建一个标签。
  5. 如果参数是一个dom对象,就会把dom对象转换成jQuery对象。

4、DOM对象和jq对象

  1. DOM对象:使用JavaScript中的方法获取页面中的元素返回的对象就是dom对象(原生JS选择器获取到的对象)。特点:只能调用dom方法或者属性,不能调用jQuery的属性或方法。
  2. jQuery对象:jquery对象就是使用jquery的方法获取页面中的元素返回的对象就是jQuery对象。特点:只能调用jQuery的方法或属性。
  3. jQuery对象其实就是DOM对象的包装集包装了DOM对象的集合(伪数组)(ps:伪数组:有0到length-1的属性,并且有length属性)
  4. DOM对象与jQuery对象的方法不能混用。
//DOM对象
var div1 = document.getElementByld("one");
console.log(div1);
>><div id="one"></div>

//jQuery对象
var $div1=$("#one");
console.log($div);
>>jQuery.fn.init [div#one, context: document,selector: "#one"]
//jQuery对象是一个伪数组,jQuery对象其实就是dom对象的一个包装集

4.1 DOM对象和jQuery对象的相互转换:

因为jQuery对象不能使用dom的方法,如果jQuery没有封装我们需要的方法,则可以将jq对象转换成dom对象。

//DOM对象转换成JQuery对象(只需要用$()把dom对象包装起来,就可以获得一个jQuery对象了)
var cr=document.getElementByld("cr");//dom对象
var $cr = $(cr);//转换成jQuery对象
//$(document).ready(function(){});就是典型的DOM对象转jQuery对象
//jQuery对象转换成DOM对象
//1.使用下标取出来
//2.使用jQuery方法 get()
var $cr = $("#cr");//jquery对象
var cr=$cr[0];//dom对象 也可以写出var cr=$cr.get(0);

ps:

  1. $()函数就是一个jquery对象的制造工厂.
  2. 如果获取的对象是 jquery对象,那么在变量前面加上$,这样方便容易识别出哪些是jquery对象,例如:
    var $variable = jquery对象;
    如果获取的是dom对象,则定义如下:
    var variable = dom对象

5、静态方法

5.1 静态和实例方法

直接添加给类的就是静态方法,如下:

//定义类
function AClass(){
}
AClass.staticMethod = function(){
alert("staticMethod");
}
//静态方法通过类名调用
AClass.staticMethod();
//给类添加一个实例方法
AClass.prototype.instanceMethod=function(){
alert("instanceMethod");
}
//实例方法通过类的实例调用
//创建一个实例对象
var a = new AClass();
//通过实例调用实例方法
a.instanceMethod();

5.2 each和map方法

  • each方法:
    原生的forEach方法只能遍历数组,不能遍历伪数组; jQuery的each方法时可以遍历伪数组
var arr = [1, 3, 5, 7, 9];
var obj = {0:1, 1:3, 2:5,length:53}//伪数组
//原生的forEach
arr.forEach(function (value, index) {
	console.log(index, value);
});
/*
   第一个参数:遍历到的元素
   第二个参数:当前遍历到的索引
*/

//利用jQuery的each静态方法遍历数组(常用)
$.each(arr, function (index, value) {
	console.log(index, value);
});
/*
第一个参数:当前遍历到的索引
第二个参数:遍历到的元素
*/
  • map方法:原生js的map方法和原生forEach一样 不能遍历伪数组;jq的map则和jQuery的each一样 map静态可以遍历伪数组
  • jQuery中的each静态方法和map静态方法的区别:
    each方法默认的返回值就是 遍历谁就返回谁
    map方法默认的返回值是一个空数组
    each方法不支持在回调函数中对遍历的数组进行处理
    map方法可以在回调函数中通过return对遍历的数组进行处理然后生成新数组

5.3 trim、isArray、isFunction、isWindow方法

  • trim方法:
    $.trim();
    作用:去除字符串两端的空格
    参数:需要去除空格的字符串
    返回值:去除后的字符串
    eg:
var str = "    xj    ";
var res = $.trim(str);
console.log("----" + str + "----");//去除前
console.log("----" + res + "----");//去除后
  • isWindow方法:
    $.isWindow();
    作用:判断传入的对象是否是window对象
    返回值:true/false
var res = $.isWindow(w);
console.log(res);
  • isArray、isFunction使用方法和isWindow方法一样

6、jQuery选择器

6.1 什么是jQuery选择器

  • jQuery选择器是jQuery为我们提供的一组方法,让我们更加方便的获取到页面中的元素。
    注意:jQuery选择器返回的是jQuery对象。
  • jQuery选择器继承了CSS与Path语言的部分语法,允许通过标签名、属性名或内容对DOM元素进行快速、准确的选择,而不必担心浏览器的兼容性,通过jQuery选择器对页面元素的精准定位,才能完成元素属性和行为的处理。

6.2 基本选择器

名称用法描述
ID选择器$("#id");获取指定ID的元素
类选择器$(".class");获取同一类class的元素
标签选择器$(“div”);获取同一类标签的所有元素
并集选择器$(“div,p,li”);使用逗号分隔,只要符合条件之一就可
交集选择器$(“div.redClass”);获取class为redClass的div元素

ps:和css的选择器用法一样。

名称用法描述
子代选择器$(“ul>li”);使用>号,获取儿子层级的元素,注意,并不会获取孙子层级的元素
后代选择器$(“ul li”);使用空格,代表后代选择器,获取ul下的所有li元素,包括孙子等

文档工具站: jQuery API

7、动画

  1. show( ); 不加参数,则没有动画效果
    参数1:代表动画的时长,毫秒数,也可以是代表时长的毫秒数,fast(200),normal(400),slow(600);
    参数2:代表动画执行完之后的回调函数
    eg:$( p ).show(2000, function(){ });
  2. hide( );和show同理。
  3. toggle( );切换。如果元素是隐藏状态则切换为动画显示。若是显示状态则隐藏。
  4. slideDown( );

易混淆:

1. mouseover和mouseenter的区别

mouseover:当鼠标移入元素或其子元素都会触发事件,所以有一个重复触发,冒泡过程。对应的移除事件是mouseout。

mouseenter:当鼠标移除元素本身(不包含元素的子元素)会触发事件,也就是不会冒泡,对应的移除事件是mouseleave。

二者的本质区别在于:mouseenter不会冒泡,简单的说,它不会被它本身的子元素的状态影响到。但是mouseover就会被它的子元素影响到,在触发子元素的时候,mouseover会冒泡触发它的父元素。(想要阻止mouseover的冒泡事件就用mouseenter)

共同点:当二者都没有子元素时,二者的行为是一致的,但是二者内部都包含子元素时,mouseenter则不会有冒泡,而mouseover则产生冒泡事件。
mouseenter就是在想要阻止冒泡事件发生的时候使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值