学习笔记《锋利的jQuery》-认识jQuery

一、JavaSrcipt和JavaScript库

JavaScript弊端
复杂的文档对象模型(DOM),不一致的浏览器实现和缺乏便捷的开发、调试工具。
Ajax的诞生(Asynchronous JavaScript And Xml)
使JavaScript不在是一种仅仅用于制作Web页面的简单脚本。
JavaScript库的作用及对比
Prototype(http://www.prototypejs.org/),最早成型的JavaScript库之一,对JavaScript的内置对象(例如String对象)做了大量的扩展。Prototype可以看着是把很多好的、有用的JavaScript的方法组合在一起而形成的JavaScript库。由于Prototype成型太早,从整体上面向对象的编程思想把握欠佳,导致结构比较松散。不过现在的Prototype也在慢慢改进。
Dojo(http://dojotoolkit.org/),它的强大之处在于提供了很多其他的JavaScript库所没有提供的功能。例如离线存储的API、生成图标的组件、基于SVG/VML的矢量图形库和Comet支持等等。Dojo是一款非常适合企业级应用的JavaScript库,并且得到了IBM、SUN和BEA等一些大公司的支持。但缺点也很明显:学习曲线陡,文档不齐全,最严重的就是API不稳定,每次升级都可能导致已有的程序失效。但自从Dojo的1.0.0版出现以后,情况有所好转,Dojo还是一个很有发展潜力的库。
YUI(http://developer.yahoo.com/yui/),是由Yahoo公司开发的一套完备的、扩展性良好的富交互网页程序工具集。YUI封装了一系列比较丰富的功能,例如DOM操作和Ajax的应用等,同时还包括了几个核心的CSS文件。该库本身文档极其完备,代码编写也非常规范。
ExtJS(http://www.extjs.com/),原本是对YUI的一个扩展,主要用于创建前端用户界面,如今已经发展到可以利用包括jQuery在内的多种JavaScript框架作为基础库,而Ext作为界面的扩展库来使用。Ext可以用来开发富有华丽外观的副客户端应用,能使B/S应用更加具有活力。但是由于Ext侧重于界面,比较臃肿,使用之前请先权衡利弊。
MooTools(http://mootools.net/),是一套轻量、简洁、模块化和面向对象的JavaScript框架。语法和Prototype类似,但却提供了更为强大的功能、更好的扩展性和兼容性。其模块化实现非常优秀,是个非常不错的JavaScript库。
jQuery(http://jquery.com/),是一个轻量级的库,拥有强大的选择器,出色的DOM操作,可靠的事件处理、完善的兼容性和链式操作等功能。

二、jQuery优势

1、轻量级
2、强大的选择器
3、出色的DOM操作的封装
4、可靠的事件处理机制
5、完善的Ajax
6、不污染顶级变量
7、出色的浏览器兼容性
8、链式操作方式
9、隐式迭代
10、行为层与结构层分离
11、丰富的插件支持
12、完善的文档
13、开源

三、jQuery代码的编写

配置jQuery环境
1、获取jQuery最新版本,网址:http://jquery.com/
2、jQuery库类型分为两种,一种是完整无压缩版本,主要用于测试、学习和开发;另外一种是经过JSMin等工具压缩后的版本,主要用于产品和项目。
3、jQuery不需要安装,只需要把文件放在公共目录位置,需要使用的页面引用即可。
window.onload与$(document).ready()的对比
 
 
 window.onload$(document).ready()
执行时机

必须等待网页中所有的内容加载完毕后

(包括图片)才能执行

网页中所有DOM结构绘制完毕后就执行,

可能DOM元素关联的东西并没有加载完

编写个数

不能同时编写多个

以下代码执行效果:

window.onload = function(){ alert("test1"); };

window.onload = function(){ alert("test2"); };

结果只会输出“test2”

能同时编写多个

以下代码执行效果:

$(doucment).ready(function(){ alert("test1"); });

$(doucment).ready(function(){ alert("test2"); });

结果两次都输出

简化写法

$(doucment).ready(function(){     //...   });

可以简写成:

$(function(){     //...    });

链式操作风格
$(".has_children").click(function(){
    $(this).addClass("highlight")               //为当前元素增加highlight类
           .children("a").show().end()          //将子节点的<a>元素显示出来,并重新定位到上次操作的元素
     .siblings().removeClass("highlight")       //获取原素的兄弟元素,并去掉它们的highligth类
           .children("a").hide();               //将兄弟元素下的<a>元素隐藏
 
});
为代码添加注释
//在一个id为table的表格的tbody中,如果每行最后一列中的checkbox没有被禁用,则把这行的背景色设为红色。
$("#table>tbody>tr:has(td:last:has(:checkbox:enabled))".css("background","red");

四、jQuery对象和DOM对象

DOM对象
Document Object Model,文档对象模型。每一份DOM都可以表示成一棵树。可以通过JavaScript中的方法获取,如下:
var domObj = document.getElementById("domId"); //获取DOM对象
var objHtml = domObj.innerHTML;//使用JavaScript的属性——innerHTML
jQuery对象
jQuery对象就是通过jQuery包装DOM对象后产生的对象。
$("#mydiv").html();等价于:document.getElementById("mydiv").innerHTML;
jQuery对象和DOM对象的相互转换
命名规则:
var $variable = jQuery对象;
var variable = DOM对象;
jQuery对象转成DOM对象  实例:
获取jQuery对象:var $cr = $("#cr"); 
转成DOM对象:var cr = $cr[0];  或者var cr = $cr.get(0);
DOM对象转成jQuery对象 实例:
获取DOM对象:var cr = document.getElementById("cr");
转成jQuery对象:var $cr = $(cr);

五、解决jQuery和其它库的冲突

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。通常,全局(global)对象都被很好的存储在jQuery命名空间里,因此当把jQuery和其它JavaScript库(例如ProtoType、MooTools或YUI)一起使用时,不会引起冲突。
注意:默认情况下,jQuery用$作为自身的快捷方式。
1、jQuery库在其它库之后导入
在其它库和jQuery库都被加载完毕后,可以在任何时候调用jQuery.noConflict()函数来将变量$的控制权移交给其他的JavaScript库。
方法一
jQuery.noConflict();//将控制权移交给prototype.js
jQuery(function(){  //使用jQuery
    jQuery("#mydiv").html("我的世界");
});
$("pp").style.display = 'none'; //使用prototype
方法二
var $j=jQuery.noConflict();//自定义一个快捷方式
$j(function(){	//使用jQuery,利用自定义的快捷方式
	$j("#mydiv").html("我的世界");
});
$("pp").style.display='none';//使用prototype
方法三
jQuery.noConflict();
jQuery(function($){
	$("#mydiv").html("我的世界");
});
$("pp").style.display = 'none';//使用prototype
方法四
jQuery.noConflict();
(function($){
	$("#mydiv").html("我的世界");
})
(jQuery);
$("pp").style.display = 'none'; //使用prototype
2、jQuery库在其它库之前导入

无需调用jQuery.noConflict()函数。可以直接使用$()方法作为其它库的快捷方式。而调用jQuery方法,需要使用“jQuery”。

六、jQuery开发工具和插件

1、Dreamweaver
Dreamweaver是建立Web站点和应用程序的专业工具。
要使Dreamveaver支持jQuery自动代码提示功能,方法非常简单,只需要下载一个插件即可。在http://xtnd.us/dreamweaver/jquery网址中下载一个名为jQuery_API.mxp的插件。
在Dreamweaver中依次选择“命令”->“扩展功能”->“安装扩展”->“jQuery_API.mxp”命令后,就会自动安装插件了。安装成功后,重启Dreamweaver生效。
2、Aptana
Aptana是一个功能非常强大、开源和专注于JavaScript的Ajax开发IDE。
3、jQueryWTP和Spket插件
jQueryWTP和Spket这两款插件都可以使Eclipse支持jQuery自动提示功能,可以分别在http://www.langtags.com/jquerywtp/http://spket.com/网址中下载相应的插件。
4、Visual Studio 2008
Visual Studio 2008版本升级。下载补丁jQuery-ver-vsdoc.js,把补丁与jQuery-ver.js放在同一目录,jQuery就有了自动提示功能。
5、其它工具
由于jQuery 本身就是JavaScript,因此可以用任意通用文本编辑器进行开发,例如:EditPlus、EmlEditor和VIM等等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值