济南PHP网

当前位置: 主页 > Jquery >

Jquery简介

时间:2010-07-25 20:06来源:百度 作者:admin 点击:
Jquery是继prototype之后又一个优秀的Javascrīpt框架。对prototype我使用不多,简单了解过。但使用上jquery之后,马上被她的优雅吸引住了。有人使用这样的一比喻来比较prototype和jquery:proto

Jquery是继prototype之后又一个优秀的Javascrīpt框架。对prototype我使用不多,简单了解过。但使用上jquery之后,马上被她的优雅吸引住了。有人使用这样的一比喻来比较prototype和jquery:prototype就像Java,而jquery就像ruby.实际上我比较喜欢java(少接触Ruby 罢了)但是jquery的简单的实用的确有相当大的吸引力啊!在项目里我把jquery作为自己唯一的框架类包。使用其间也有一点点心得,其实这些心得,在jquery的文档上面也可能有讲,不过还是记下来,以备忘罢。

目录

一,找到你了!
二,Jquery对象?
三,代替body标签的onload
四,事件机制
五,同一函数实现get\set
六,ajax
七,渐入淡出
八,plugin
九,jQuery 历史版本
十、JQuery1.42最新版本介绍

jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多javascript高手加入其team,包括来自德国的Jörn Zaefferer,罗马尼亚的Stefan Petre等等。jQuery是继prototype之后又一个优秀的Javascrīpt框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。

一,找到你了!

  在编写js库代码时候,你一定经常和“$”美元符号打交道吧?无论prototype还是DWR都使用了$代替频繁的document.getElementById()操作。jQuery也这样做了,但是,它的功能远非如此,瞧瞧以下的jQuery代码,你就会发现它的美丽: 
 
  代码 
 
  var someElement = $("#myId"); 
 
  看起来比其他两个框架的要多了一个#,好,看看下面的用法: 
 
  代码 
 
  $("div p"); // (1) 
 
  $("div.container"); // (2) 
 
  $("div #msg"); // (3) 
 
  $("table a",context); // (4) 
 
  在prototype里看过这样的写法吗?第一行代码得到所有div标签下的p元素。第二行代码得到class 为container的div元素,第三行代码得到标签下面id为msg的div元素(不过最好别这样写,因为jQuery需要遍历所有的div元素,对于带id的元素,直接用$("#id"))。第四行代码得到context为上下文的table里面所有的连接元素。 
 
  如果你熟悉CSS,你会觉得这些写法很眼熟!对了。正是。看出奥妙了吧。jQuery就是如此强大,你可以轻易地找到DOM中的任何元素,而这也是jQuery设计之初query的真实含义(查询)。 
	

二,Jquery对象?

  jquery提供了很多遍历的函数,如each(fn),但是使用这些函数的前提是:你使用的对象是Jquery对象。使一个Dom对象成为一个Jquery对象很简单,通过下面一些方式(只是一部分): 
 
  代码 
 
  var a = $("#cid"); 
 
  var b = $("

hello

");   var c = document.createElement("table");   var tb = $(c);

三,代替body标签的onload

  这个惯例,也许是除了$()之外,用得最多的地方了。下面一段代码: 
 
  代码 
 
  $(document).ready(function(){ 
 
		alert("hello"); 
 
  });(1) 
 
	<body onload="alert('hello');">(2)
 
  上面两段代码是等价的。但代码1的好处是做到表现和逻辑分离。并且可以在不同的js文件中做相同的操作,即$(document).ready (fn)可以在一个页面中重复出现,而不会冲突。基本上Jquery的很多plugin都是利用这个特性,正因为这个特性,多个plugin共同使用起来,在初始化时不会发生冲突。 
 
  不管怎么说,这个惯例可以分离javascrīpt与HTML。推荐使用。 
	

四,事件机制

  我大量使用的事件可能就是button的onclick了。以前习惯在input 元素上写onclick = "fn()",使用jquery可以使javascrīpt代码与html代码分离,保持HTML的清洁,还可以很轻松地绑定事件,甚至你可以不知道“事件”这个名词。 
 
  代码 
 
  $(document).ready(function(){ 
 
	  $("#clear").click( 
	 
		  function(){ 
		 
			  alert("i am about to clear the table"); 
		 
		  } 
	 
	  ); 
	 
	  $("form[0]").submit(validate); 
	 
  }); 
 
  function validate(){ 
 
	  //do some form validation 
 
  } 
	

五,同一函数实现get\set

  代码 
 
  $("#msg").html(); 
 
  $("#msg").html("hello"); 
 
  上面两行代码,调用了同样的函数。但结果却差别很大。 
 
  第一行是返回指定元素的HTML值,第二行则是将hello这串字符设置到指定元素中。jquery的函数大部分有这样的特性。 
	

六,ajax

  这是一个ajax横行的时代。多少人,了不了解ajax的都跟着用上一把。呵。使用jquery实现ajax同样简单异常 
 
  代码 
 
  (1) 
 
  $.get("search.do",{id:1},rend); 
 
  function rend(xml){ 
 
	  alert(xml); 
 
  } 
 
  (2) 
 
  $.post("search.do",{id:1},rend); 
 
  function rend(xml){ 
 
	  alert(xml); 
 
  } 
 
  (3) 
 
  $("#msg").ajaxStart(function(){ 
 
	  this.html("正在加载。。。。"); 
 
  }); 
 
  (4) 
 
	$("#msg").ajaxSuccess(function(){ 
	 
	  this.html("加载完成!"); 
 
  }); 
 
  这些都是较常用的方法,get和post用法一样。第一个参数是异步请求的url,第二个为参数,第三个回调方法。(4)的方法会在指定的Dom对象上绑定响应ajax执行的事件。 
 
  (5)同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。 
 
  var html = $.ajax({ 
 
	  url: "some.php", 
	 
	  async: false 
	 
  }).responseText; 
 
  (6) 保存数据到服务器,成功时显示信息。 
 
  $.ajax({ 
 
	  type: "POST", 
	 
	  url: "some.php", 
	 
	  data: "name=John&location=Boston", 
	 
	  success: function(msg){ 
	 
		  alert( "Data Saved: " + msg ); 
	 
	  } 
	 
  }); 
	

七,渐入淡出

  代码 
 
  $("#msg").show("fast"); 
 
  $("#msg").hide("slow"); 
 
  $("#msg").fadeIn(); 
 
  $("#msg").fadeOut(); 
 
  没错,上面两行代码已经分别实现了一个id为Msg的jquery对象的渐入和淡出。做一个像Gmail一样的动态加载通知条,用jquery就那么简单。两个函数接受的参数除了快慢等,还可以接收整型,作为渐入或淡出的完成时间,单位为MS。 
	

八,plugin

  这也是一个插件的时代。 
 
  jquery插件给我的感觉清一色的清洁,简单。如Jtip,要使用它的功能,只需要在你的元素的class上加上Jtip,并引入jtip.js及其样式即可以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已经有了很多很好,很精彩的插件。 
 
  写得很烂。可能大家看不出jquery的好处。嗯,光听是没用的,试用一下吧。你会发觉很有趣。 
 
  暂时告一段落吧。待有新的发现再来分享。 
 
  加一些Jquery的资源: 
 
  http://www.visualjquery.com/index.xml 很好的API查询站点 
 
  http://jquery.com/demo/thickbox/ 知道lightBox吧,看看Jquery是怎样实现相同的东西 
 
  http://jquery.org.cn/visual/cn/index.xml //不错的JQUERY 中文学习 推荐 
 
  微软的visual studio 2008 sp1支持对jquery的动态提示,只要在代码页导入对应的vsdoc脚本就可以。 
 
  目前为止,jQuery的最新版本为1.4 
	

九,jQuery 历史版本

  jQuery 1.0(2006年8月):该库的第一个稳定版本,已经具有了对CSS选择符、事件处理和AJAX交互的稳健支持。 
 
  jQuery 1.1(2007年1月):这一版大幅简化了API。许多较少使用的方法被合并,减少了需要掌握和解释的方法数量。 
 
  jQuery 1.1.3(2007年7月):这次小版本变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版本开始,jQuery的性能达到了Prototype、Mootools以及Dojo等同类JavaScript库的水平。 
 
  jQuery 1.2(2007年9月):这一版去掉了对XPath选择符的支持,原因是相对于CSS语法它已经变得多余了。这一版能够支持对效果的更灵活定制,而且借助新增的命名空间事件,也使插件开发变得更容易。 
 
  jQuery UI(2007年9月):这个新的插件套件是作为曾经流行但已过时的Interface插件的替代项目而发布的。jQuery UI中包含大量预定义好的部件(widget),以及一组用于构建高级元素(例如可拖放的界面元素)的工具。 
 
  jQuery 1.2.6(2008年5月):这一版主要是将Brandon Aaron开发的流行的Dimensions插件的功能移植到了核心库中。 
 
  jQuery 1.3(2009年1月):这一版使用了全新的选择符引擎Sizzle,库的性能也因此有了极大提升。这一版正式支持事件委托特性。 
 
  jQuery 1.3.2(2009年2月):这次小版本升级进一步提升了库的性能,例如改进了:visible/:hidden选择符、.height()/.width()方法的底层处理机制。另外,也支持查询的元素按文档顺序返回。 
 
  jQuery 1.4(2010年1月14号对)代码库进行了内部重写组织,开始建立一些风格规范。老的core.js文件被分为attribute.js, css.js, data.js, manipulation.js, traversing.js和queue.js;CSS和attribute的逻辑分离。 
 
  1.4重要新特性: 
 
  •常用方法的性能大幅提升:重写了大部分较早期的函数; 
 
  •更容易使用的设置函数(setter function):为所有对象新增了许多易用的设置函数; 
 
  •对Ajax的改进:引入了许多Ajax和JSON处理方面的更新,包括HTML5元素的序列化; 
 
  •attribute(改进了.attr()的性能)、jQuery()核心函数、CSS(.css()性能有两倍提升)、特效和事件、DOM操作等也有显著改进 
	

十、JQuery1.42最新版本介绍

  jQuer1.4.2版本修复了1.4版本的一些错误和优化了一些不错的改进,速度比1.4.1版本又提升 了一倍,该版本对性能做了一些改进,同时增加了一些api ( .delegate() and .undelegate(). ),右图是JQuery各个版本的性能比较: 
 
  jquery1.42新特性: 
 
  加了两个新方法:.delegate() 和.undelegate(). 是对.live() and .die() 的补充. 这两个方法对特定的事件的起到简化。 
 
  范例: 
 
  $("table").delegate("td", "hover", function(){ $(this).toggleClass("hover"); }); 
 
  等于使用 .live(): 
 
  $("table").each(function(){ $("td", this).live("hover", function(){ $(this).toggleClass("hover"); }); }); 
 
  另外,以下代码中,.live() 基本上等同于 .delegate(). 
 
  $(document).delegate("td", "hover", function(){ $(this).toggleClass("hover"); }); 
 
  变更 
 
  大量代码进行了重写, 提升了性能及修正了一些长期存在的问题。 
 
  提升性能 
 
  每次开发新的jquery版本,我们都努力去持续优化性能,以保证你能用到最高性能的javascript代码。 
 
  在Taskspeed benchmark 的测试中,1.4.2比1.4.1快1倍,比1.3.2快2倍。 
 
  主要是在下面4个方面进行了提升: 
 
  .bind() 和 .unbind(). 
 
  .empty(), .remove(), 和 .html(). 
 
  插入单个DOM 节点到 document. 
 
  $("body") 
 
  在测试用例中,比较多的用到了 $("body"), .bind(), .unbind()方法,因此测试结果提升比较明显。 
 
  v重写事件 
 
  event handlers 不再作为一个对象属性保存在 jQuery的内部对象里。现在是保存在一个内部的对象数组里。v 现在可以通过调用.data("events") , 将会返回一个对象包含的所有事件类型。 
 
  现在可以使用不同的数据、命名空间、事件类型绑定在同一个handler 
 
  在一个handler清除自己之后,事件handler会继续执行 
 
  不用关联数据或者命名空间到事件handler 
 
  不用再使用代理方法 
 
  事件执行的顺序在所有浏览器中得到保证,Google Chrome 中出现的对象循环逻辑问题已经得到解决.
(责任编辑:admin)
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
  • 上一篇:没有了
  • 下一篇:没有了
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
栏目列表
推荐内容
  • Jquery简介

    Jquery是继prototype之后又一个优秀的Javascrīpt框架。对prototype我使...

热点内容