问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Jquery主要是做什么的?

发布网友 发布时间:2022-04-23 08:44

我来回答

4个回答

懂视网 时间:2022-04-12 14:45

jQuery的工具方法,其实就是静态方法,源码里面就是通过extend方法,把这些工具方法添加给jQuery构造函数的。 jQuery.extend({ ...... guid: 1, //唯一标识符,跟事件有关。举个例子:function show(){alert(this);}, $("#input1").click(show),$("#input2

jQuery的工具方法,其实就是静态方法,源码里面就是通过extend方法,把这些工具方法添加给jQuery构造函数的。

jQuery.extend({

  ...... 

  guid: 1,

  //唯一标识符,跟事件有关。举个例子:function show(){alert(this);}, $("#input1").click(show),$("#input2").click(function(){$("#input1").off()}),这里的show方法是事件方法,所以通过off取消掉事件绑定,可以很容易找到事件方法show。但是如果把 $("#input1").click(show)改成 $("#input1").click($.proxy(show,window)),这时show不是事件方法,而是普通方法,那么通过off取消的时候,它是怎么找到这个普通方法show的,其实就是通过guid,因为guid会累加,所以是唯一的,因此可以找到。请看下个方法就知道详情了。

  proxy: function( fn, context ) {

    //改变方法(函数)执行的this指向。举例:$.proxy(show,document),想给show传参的话,有两种方式:var fn = $.proxy(show,document,1,2);fn(3,4)。最终show执行时就会变成show(1,2,3,4),proxy返回一个函数,调用fn时,就会执行show方法。
    var tmp, args, proxy;

    if ( typeof context === "string" ) { //这里处理特殊调用情况,比如:$.proxy(obj,"show")(正常写法$.proxy(obj.show,obj)),show方法执行时,this指向的obj,并且show是obj的属性方法.var obj = { show: function(){}}。
      tmp = fn[ context ];
      context = fn;
      fn = tmp;
    }

    if ( !jQuery.isFunction( fn ) ) {
      return undefined;
    }

    args = core_slice.call( arguments, 2 ); //传入的参数,相当于例子的[1,2]
    proxy = function() {
      return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); //把[3,4]和[1,2]合并成[1,2,3,4]
    };

    proxy.guid = fn.guid = fn.guid || jQuery.guid++;

    //第一次时,fn.guid(show.guid)是undefined,proxy.guid = fn.guid = 1,show.guid =1,

    //function() {return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) )}.guid=1,唯一标识,取消绑定时,可以用到。

    return proxy;
  },

  //$().css(),$().attr(),通过参数的不同,实现get/set。参数的个数,以及参数的类型。$("div").css("width"),获得第一个div元素的width,$("div").css("width",100)设置所有的div元素的width。$("div").css({width:100,height:200}),也是设置所有的div元素,尽管只有一个参数,但是类型不一样。JQuery中有很多这种方法,所以统一用access实现。

  access: function( elems, fn, key, value, chainable, emptyGet, raw ) {

    //elems操作的元素,可能是一个集合。fn是一个回调函数(有区别的在回调函数中处理,比如,css设置样式,attr设置属性)。key和value就是属性名和属性值。chainable为true,设置,为false就获取。
    var i = 0,
      length = elems.length,
      bulk = key == null;

    if ( jQuery.type( key ) === "object" ) {//处理这种类型$("div").css({width:100,height:200})
      chainable = true;
      for ( i in key ) {
        jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
      }

    }

    else if ( value !== undefined ) { //处理这种$("div").css("width",100)
      chainable = true;

      if ( !jQuery.isFunction( value ) ) {
        raw = true; //字符串(数字)时
      }

      if ( bulk ) { //如果没有key值
        if ( raw ) { //如果value是字符串(数字)
          fn.call( elems, value ); //调用回调方法
          fn = null; //把回调方法赋为空

        }

        else { //如果是函数,这里面的不用深入理解
          bulk = fn;
          fn = function( elem, key, value ) {
            return bulk.call( jQuery( elem ), value );
          };
        }
      }

      if ( fn ) { //如果没有key值,并且value是字符串(数字),这里就为null,不会执行
        for ( ; i < length; i++ ) {
          fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
        }
      }
    }

    return chainable ? //获取时,chainable为false
        elems : //设置时,chainable为true,直接返回元素,进行后续的链式操作

          bulk ?
            fn.call( elems ) : //没有key值时,就回调
              length ? fn( elems[0], key ) : emptyGet; //有key值时,判断元素有没有元素,有的话就获取第一个元素的key值(属性名的值),没有元素的话,就返回emptyGet。
  },

  now: Date.now, //当前时间距离1970年的毫秒数,相当于(new Date()).getTime()

  //以下方法是处理这种情况的:

  //

$("#div1").get(0).offsetWidth取到的是0,因为它是display:none,不存在DOM树中。$("#div1").width()取到的是100,为啥jQuery可以。因为jQuery会对display:none的元素进行处理,变成

  swap: function( elem, options, callback, args ) { //css的转换,内部使用
    var ret, name,
      old = {};

    for ( name in options ) {

      //保存老样式,插入新样式。这里假设options={width:100px;height:100px;background:red;display:block;visibility:hidden;position:absolute}

      //elem.>
      old[ name ] = elem.style[ name ];
      elem.style[ name ] = options[ name ];
    }

    ret = callback.apply( elem, args || [] );

    //通过插入的新样式来获取元素的css值,callback = function(args){ if(args不是[]) return this[args]},args= offsetWidth;

    for ( name in options ) { //恢复老样式
      elem.style[ name ] = old[ name ];
    }

    return ret;
  }

  ......

})

最后讲一下这个方法:

function isArraylike( obj ) {//判断是否是数组,类数组,带length的json,是的话就返回真
  var length = obj.length,
  type = jQuery.type( obj );

  if ( jQuery.isWindow( obj ) ) { //担心window对象有length属性
    return false;
  }

  if ( obj.nodeType === 1 && length ) {

  //元素节点对象,并且有length属性,返回真。document.getElementsByTagName("div")和body.childNodes都不是这种情况。可能用于内部调用,这里如果有谁知道的,可以告诉我。

    return true;
  }

  return type === "array" || type !== "function" && //不能是函数,因为函数也可能有length属性
    ( length === 0 ||typeof length === "number" && length > 0 && ( length - 1 ) in obj );

    //typeof length === "number" && length > 0 && ( length - 1 ) in obj )处理{0:"a",1:"b",length:2}这种情况。length === 0处理arguments为空的时候,就是不传入函数任何数据,这时函数中的arguments的length为0,但是是类数组。document.getElementsByTagName("div")和body.childNodes也是类数组。
}

加油!

热心网友 时间:2022-04-12 11:53

JQuery是继prototype之后又一个优秀的Java库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE6.0+, FF1.5+, Safari2.0+, Opera9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需要定义id即可。
jQuery是当前很流行的一个Java框架,使用类似于CSS的选择器,可以方便的操作HTML元素,拥有很好的可扩展性,拥有不少插件。
jQuery可以快速找到文档中的html元素,并对其进行操作,如隐藏、显示、改变样式、添加内容等。能够方便的在页面上添加和移除html元素。这些功能虽然使用Java也能实现,但是jQuery绝对使这些工作变得更加简单。

热心网友 时间:2022-04-12 13:11

jQuery官方解释的很清楚jQuery是一个快速、简洁、功能丰富的JavaScript库,重点在jQuery是一个库(library)
jQuery本身是一个基于插件的JavaScript库,它的各种功能可以通过新的插件进行增强。jQuery为Web编程提供了一个抽象的层,使得它可以兼容于任何浏览器,并且大大简化了原先用JavaScript做的工作,总而言之, jQuery可以完成如下所示的工作。
1、快速获取文档元素:jQuery的选择机制构建于Css的选择器,它提供了快速查询DOM文档中元素的能力,而且大大强化了JavaScript中获取页面元素的方式。
2、提供漂亮的页面动态效果: JQuery中内置了一系列的动画效果,可以开发出非常漂亮的网页,目前许多知名的网站都使用了jQuery的内置的效果,比如淡入淡出,元素移除等动态特效。
3、创建Ajax无刷新网页: Ajax是异步的JavaScript和XML的简称,可以开发出非常灵敏无刷新的网页,特别是开发服务器端网页时,比如PHP网站,需要往返地与服务器沟通,如果不使用Ajax,每次数据更新不得不重新刷新网页,而使用了Ajax特效后,可以对页面进行局部刷新,提供非常动态的效果。
4、提供对JavaScript语言的增强: JQuery提供了对基本JavaScript结构的增强,比如元素选代和数组处理等操作。
5、增强的事件处理: jQuery提供了各种页面事件,它可以避免程序员在HTML中添加太多事件处理代码,最重要的是,它的事件处理器消除了各种浏览器兼容性问题。
6、更改网页内容:JQuery可以修改网页中的内容,比如更改网页的文本、插入或转网页图像, jQuery简化了原本使用JavaScript代码需要处理的方式。

热心网友 时间:2022-04-12 14:46

jquery是基于js封装的库 和js是一样样的 只不过它把js的一些方法 封装了 让浏览器更兼容 程序员写起来更轻松
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
缺土的宝宝女孩名字车姓 推荐一些带有成字的女孩名字 江姓婴儿名字大全女孩2024龙宝宝 陌陌的安全等级和财富等级是什么 如何提高陌陌等级? 冰箱旧了是不是很耗电 手机号收不到LINE的手机验证码怎么办 注册line连我账号收不到验证码 日韩服属于哪里 lineplay进入别人家能说话吗 jquery版本冲突,分别是 jquery 1.3.2 和 jquery 1.4.3 。在线等。_百 ... AngularJS和jquery,有什么区别? jQuery JavaScript Library v1.4.2和jQuery v1.8.2有什么区别? 我想学一下jQuery 下了两个文件 这两个文件有什么区别 jquery-1.4.2.js和jquery-1.4.2.min.js? 怎么在微博里面看主播分享的好物链接? jquery升级利与弊 为什么各大网站用的jquery版本都是1.4.2 jquery-1.4.2.js和jquery-1.4.2.min.js的区别转 我在自己的新浪微博里分享的别人的视频怎么找, jquery 1.4.2和jquery.ui.core.js(1.8.2)、jquery.ui.datepicker.js(1.8.2)兼容 腾讯微博,分享后东西在哪里能看到 jquery-1.4.2.min.js和jquery.js有什么区别 请问在微博什么地方才可以看到我在微信里分享的连接 jquery-1.4.2.min.js文件有什么用途? 视频会议摄像头怎么连接nvr录像机? jquery-1.4.2.min.js文件有什么用途?里面的代码都有什么用途? 新浪微博分享的内容在哪里查看 新浪微博怎么看自己的分享 和抖音一样的软件被禁止了叫啥 公安局把摄像头拍到的视频会发出去吗 将程序由jquery1.4.2下改为jquery1.10.2 jQuery $(window).scroll事件出现问题? jquery有 jquery-1.4.1.js,jquery-1.4.1.min.js和jquery-1.4.1-vsdoc.js有什么区别。 jQuery是什么? jquery 这个问题,纠结的要死 jquert和jquery api的区别 苹果手机为什么显示不出来周围的wifi? 为什么苹果手机显示不了附近的无线网列表 苹果手机为什么搜不到附近的WiFi到成都春熙路附近哪里修 苹果手机正在搜索wifi一直搜不到怎么办? 在阳台可以种植西红柿吗?应该怎么养护西红柿? 怎样在阳台上种植西红柿? 想在阳台上种植西红柿,该如何做好种植管理呢? 在阳台种盆栽小番茄可以不? 阳台如何种植西红柿 在阳台上种西红柿 如何在家中阳台上种植小番茄? 如果在阳台上种植西红柿,平时应该怎样管理呢? 阳台盆栽西红柿,有哪些让西红柿又大又甜的小技巧? 阳台种西红柿如何自己育苗?