jQuery是什么?

    

  • jQuery是一款优秀的JavaScript库,从命名可以看出jQuery最主要的用途就是用来做查询(jQuery=js+Query),正如jQuery官方Logo副标题所说(write less,do more)使用jQuery能让我们对HTML文档遍历和操作、事件处理、动画以及Ajax变得更加简单。

jQuery的版本

  通过jQuery官网我们可以看到,目前jQuery有三个版本:

  • jQuery 1x
  • jQuery 2x
  • jQuery 3x

  那么我们在使用时,到底该选哪一个版本呢?说到这就该看一下这三个版本的区别:

  • jQuery 1x :兼容IE678,但相对其它版本文件较大,官方只做BUG维护,功能不再新增,最终版本为:1.12.4。
  • jQuery 2x :不兼容IE678,相对1x文件较小,官方只做BUG维护,功能不再新增,最终版本为:2.2.4。
  • jQuery 3x :不兼容IE678,只支持最新浏览器,很多老的jQuery插件不支持这个版本,相对1x文件较小,提供不包含Ajax/动画API版本。

  我们可以从他的性能和查看百度、淘宝等网站去判断,现在多用的是jQuery1x版。

  (注:可根据自身需求去下载jQuery版本

jQuery类型

  我们在下载时可以看到jQuery不论哪个版本,它都有两种类型:

  1. 带min       这个是压缩过后的版本,它是去掉了我们的代码中的空格和换行,并且自行变更了参数
  2. 不带min   这个是生产版,利于开发人员去审查和更改

引入jQuery文件

 <script src="js/jquery-1.11.3.min.js"></script>

或者在线引用

百度压缩版引用地址:
<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script> 微软压缩版引用地址:
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.11.1.min.js"></script> 官网jquery压缩版引用地址:
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>

 jQuery的核心函数就是:$()

编写jQuery代码

 <script>
$(document).ready(function(){
//内容
})
</script>

jQuery和原生JS的区别

  话不多说,上代码:

现在body里面写一个img

 <body>
<img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=904985312,1131631846&fm=26&gp=0.jpg"/>
</body>

然后我们用原生JS来看看

window.onload = function (event){
var img = document.getElementsByTagName("img")[0];
console.log(img);
}

通过原生JS入口函数可以拿到DOM元素

同样用jQuery来试试

$().ready(function(){
var $img = $("img")[0];
console.log($img);
})

通过jQuery入口函数可以拿到DOM元素

那我们在试试分别获取DOM元素的宽高

JS

var width = window.getComputedStyle(img).width;
var height = window.getComputedStyle(img).height;
console.log("onload",width,height);

通过原生JS可以得到DOM元素的宽高

jQuery

var $width = $img.width;
var $height = $img.height;
console.log("ready",$width,$height);

注意,在运行这一个代码时需要清除浏览器的历史记录

从这些可以看出

  • 原生JS和jQuery入口函数的加载模式不同
  • 原生JS会等到DOM元素加载完毕,并且也会等图片加载完毕才执行
  • jQuery会等到DOM元素加载完毕,但不会等图片加载完毕就执行

如果编写多个入口函数呢?

window.onload = function(event){
alert("这是第一个");
}
window.onload = function(event){
alert("这是第二个");
}
$().ready(function(){
alert("这是第一个")
})
$().ready(function(){
alert("这是第二个")
})
  • 原生JS编写多个入口函数,后面的会覆盖前面的
  • jQuery编写多个入口函数,后面的不会覆盖前面的

jQuery入口函数的其它几种写法(了解一下就好了)

//第一种
$(document).ready(function(){
alert("one");
})
//第二种
jQuery(document).ready(function(){
alert("tow");
})
//第三种
$(function(){
alert("three");
})
//第四种
jQuery(function(){
alert("four");
})

在使用中,我们通常使用第三种,因为write less嘛

静态方法和实例方法

  什么是静态方法和实例方法?

<script type="text/javascript">
//1、定义一个类
function AClass(){
}
//2、给这个类添加一个静态方法
//直接添加给类的就是静态方法
AClass.staticMethod = function(){
alert("hello")
}
//静态方法通过类名调用
AClass.staticMethod(); //3、给这个类添加一个实例方法
AClass.prototype.instanceMethod = function(){
alert("world");
}
//实例方法通过类的实例调用
//创建一个实例(创建一个对象)
var a = new AClass();
//通过实例调用实例方法
a.instanceMethod();
</script>

jQuery-each方法与原生JS的forEach方法

用数组和伪数组举例

<script type="text/javascript">
var arr = [1,3,5,7,9];
var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6}
arr.forEach(function(value , index){
console.log(index,value)
})
obj.forEach(function(value , index){
console.log(index,value)
})
</script>

用原生JS的forEach静态方法遍历数组

  1. 第一个参数:遍历到的元素
  2. 第二个参数:当前遍历到的索引
  3. 注意:原生JS的forEach方法只能遍历数组,不能遍历伪数组
<script type="text/javascript">
var arr = [1,3,5,7,9];
var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6}
$.each(arr,function(index,value){
console.log(index,value);
})
$.each(obj,function(index,value){
console.log(index,value);
})
</script>

用jQuery的each方法遍历伪数组

  1. 第一个参数:当前遍历到的索引
  2. 第二个参数:遍历到的元素
  3. 注意:jQuery的each方法可以遍历数组和伪数组

 jQuery-each方法与原生JS的map方法

<script>
var arr = [1,3,5,7,9];
var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6};
arr.map(function(value,index,array){
console.log(index,value,array);
})
obj.map(function(value,index,array){
console.log(index,value,array);
})
</script>

用原生JS的map方法遍历

  1. 第一个参数:当前遍历到的元素
  2. 第二个参数:当前遍历到的索引
  3. 第三个参数:当前被遍历的数组
  4. 注意:原生JS的map方法跟它的forEach一样,不能遍历伪数组
<script>
var arr = [1,3,5,7,9];
var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6};
$.map(arr, function(value,index) {
console.log(index,value);
});
$.map(obj, function(value,index) {
console.log(index,value);
});
</script>

用jQuery的map方法遍历

  1. 第一个参数:要遍历的数组
  2. 第二个参数:每遍历一个元素之后执行的回调函数
  • 回调函数
  1. 第一个参数:遍历到的元素
  2. 第二个参数:遍历到的索引
  3. 注意:jQuery的map方法和它的each方法一样,数组跟伪数组都可以遍历

既然jQuery的map方法和each方法都可以遍历数组和伪数组,那么它们有什么区别呢?

<script>
var arr = [1,3,5,7,9];
var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6};
var res = $.map(obj, function(value,index) {
console.log(index,value);
});
var res1 = $.each(obj, function(value,index) {
console.log(index,value);
});
console.log(res);
console.log(res1);
</script>

  区别:

  • each静态方法默认的返回值就是,遍历谁就返回谁
  • map静态方法默认的返回值是一个空数组
  • each静态方法不支持在回调函数中对遍历的数组进行处理
  • map静态方法支持在回调函数中通过return对遍历的数组进行处理,然后生成一个新的数组返回

jQuery从小白开始---初始jQuery的更多相关文章

  1. 初始jQuery

    JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera ...

  2. 初始jquery(5)

    一.什么是JQuery: JQuery是对JavaScript的封装,简化了JS代码,是主流框架的基础(VUE,EasyUI,Bootstrap) 它是2006年推出的 二.JQuery的优势: 1. ...

  3. jQuery源代码学习之九—jQuery事件模块

    jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 j ...

  4. jQuery介绍 DOM对象和jQuery对象的转换与区别

    jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery介绍      jQuery: http://jquery.com/      write less, do more.   j ...

  5. jquery.lazyload 实现图片延迟加载jquery插件

    看到了淘宝产品介绍中,图片是在下拉滚动条时加载,这是一个很不错的用户体验.减少了页面加载的时间了,也减轻了服务器的压力,就查了下用JQuery..   什么是ImageLazyLoad技术 在页面上图 ...

  6. jQuery入门(1)jQuery中万能的选择器

    jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...

  7. jQuery入门(4)jQuery中的Ajax应用

    jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...

  8. jQuery文件上传插件jQuery Upload File 有上传进度条

    jQuery文件上传插件jQuery Upload File 有上传进度条 jQuery文件上传插件jQuery Upload File,插件使用简单,支持单文件和多文件上传,支持文件拖拽上传,有进度 ...

  9. jQuery原生框架中的jQuery.fn.extend和jQuery.extend

    extend 方法在 jQuery 中是一个很重要的方法,jQuey 内部用它来扩展静态方法或实例方法,而且我们开发 jQuery 插件开发的时候也会用到它.但是在内部,是存在 jQuery.fn.e ...

随机推荐

  1. 代码转换为html显示

    需要将代码转换为 html 使其显示好看一些,可以在这里进行装换: https://tohtml.com/ http://hilite.me/

  2. 马蜂窝搜索基于 Golang 并发代理的一次架构升级

    搜索业务是马蜂窝流量分发的重要入口.很多用户在使用马蜂窝时,都会有目的性地主动搜索与自己旅行需求相关的各种信息,衣食住行,事无巨细,从而做出最符合需求的旅行决策. 因此在马蜂窝,搜索业务交互的下游模块 ...

  3. 看看redis中那些好玩的module (sql on redis, bf/cf on redis)

    自从redis加入了module功能之后,redis的生态就很有意思了,每个领域的大佬都会以插件的形式给redis扩展一些新的功能,比如本篇说到的rediSQL,rebloom. 一:rediSQL ...

  4. 游戏服务器h2engine架构优化和跨平台设计

    H2engine的GitHub星星不知不觉已经破百了,也没有特意推广过,但是慢慢的关注的人越来越多.因为事情多,好久没有写东西了,前一段时间有了一些想法,把h2engine又更新了一下,感觉h2eng ...

  5. Dapper 链式查询 扩展

    Dapper 链式查询扩展 DapperSqlMaker   Github地址:https://github.com/mumumutou/DapperSqlMaker  欢迎大佬加入 Demo: 查询 ...

  6. openlayers4 入门开发系列之地图工具栏篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  7. sqlserver2012 在视图中建索引

      第一种 如果已经有视图但是要加索引只需要执行 以下SQL就好(前提是此视图必须                    绑定到架构) CREATE UNIQUE CLUSTERED INDEX in ...

  8. windows下gitbash安装教程

    下载安装 1.从git官网下载一个git安装包,官网下载地址http://www.git-scm.com/download/ 2.双击安装程序,进入欢迎界面点击[Next >] 3.阅读协议,点 ...

  9. python+selenium 自动化测试实战

    一.前言: 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习.(注:项目是针对我们公司内部系统的测试,只能内部网络访问, ...

  10. java.lang.ClassNotFoundException: org.I0Itec.zkclient.IZkStateListener异常解决

    在启动Dubbo项目时,出现该异常 java.lang.ClassNotFoundException: org.I0Itec.zkclient.IZkStateListener 解决,引入 <d ...