学习jquery有些时间了,感觉jquery的封装的特性特别出色,尤其是屏蔽了复杂的DOM操作,在以往的操作中,定位一个标记,总要想文档,树这些概念,但是在jquery中,只要和css一样的写法,就可以快速定位一个标记.
下面我们通过代码来看看是怎么定位的:
css定位的代码:
直接定位系统标签:
ul,li{
margin:0px;
padding:0px;
list-style:none;
}
定位带有class的标签:
.Loading{
width:400px;
/*margin-left:auto;
//margin-right:auto;*/
margin:0 auto;
visibility:hidden;
}
定位带有id属性的标签:
#contentsecond{
width:300px;
height:100px;
}
在jquery中定位这样的标签
定义带有ID属性的标签:
$("#realcontent").load("test.html");
直接定义系统标签及定义带有class属性的标签:
$("div.contentin").removeClass("contentin");
现在我们来看看用DOM找到一个标签:
function setBorder( n )
{
document.getElementById( "image1" ).border = n;
}
现在我们看看jquery是如何帮助我们封装这个功能的:
(function() {
var
// Will speed up references to window, and allows munging its name.
window = this,
// Will speed up references to undefined, and allows munging its name.
undefined,
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
jQuery = window.jQuery = window.$ = function(selector, context) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init(selector, context);
},
// A simple way to check for HTML strings or ID strings
// (both of which we optimize for)
quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
// Is it a simple selector
isSimple = /^.[^:#\[\.,]*$/;
jQuery.fn = jQuery.prototype = {
init: function(selector, context) {
// Make sure that a selection was provided
// Make sure that a selection was provided
selector = selector || document;
this[0] = selector;
this.length = 1;
this.context = selector;
return this;
},
show:function() {
alert("this.show");
},
// Start with an empty selector
selector: "",
// The current version of jQuery being used
jquery: "1.3.2"
};
jQuery.fn.init.prototype = jQuery.fn;
})();
function test(src){
alert($(src));
$(src).show();
扩展:隐式迭代
下面是书中提到的一个jquery的特点
当用JQuery找到带有“.myClass”类的全部元素,然后隐藏他们时。无需循环遍历每一个返回的元素。相反,JQuery里的方法都被设计成自动操作的对象集合,而不是单独的对象,这使得大量的循环结构变得不再必要,从而大幅度地减少代码量。
实际是jquery将dom元素的树形结构,封装为一个集合,在给某类方法添加事件的时候,jquery代替我们遍历给他们都连接到代码段,这样就减少了我们很多的重复工作!
例子:
$(".yourclass").addClass("newclass");
像这样的就是隐式迭代因为$(".yourclass")选到的元素不一定只有一个,比如$(".yourclass")选中n个元素 这n个元素都会加上"newclas"这个class,除了ID选择器其它都是隐式迭代的比如$("#yourclass") 就算有多个id="yourclass" 也只能得到第1个在jqery中,因为它迭代的时候只取第一个元素!所有的方法都被设计成自动操作对象集合,而不是单一的一个对象,这样避免了大量的没有意义的循环
总结:
通过对代码的简单理解,我们不难发现,jquery简单的背后做了大量的总结及抽象工作,所以我们可以这么总结:
1,要向写好代码,必须不断优化改进!
2,要向做好软件,尽量灵活抽象是正道
3,一个团队的管理,犹如设计一个页面,快速定位某项工作的基础是有一个全局的管理观念(参考代码中的window)
分享到:
相关推荐
锋利的jQuery锋利的jQuery锋利的jQuery锋利的jQuery
锋利的jquery。本书循序渐进地对jQuery的各种函数和方法调用进行了介绍,读者可以系统地掌握jQuery的DOM操作、事件监听和动画、表单操作、AJAX以及插件方面等知识点,并结合每个章节后面的案例演示进行练习,达到...
<锋利的jquery>电子书的实验源码,用于自己的学习。jquery是js的超集,平时的开发过程中,原生的js用的倒没有jquery多
锋利的jQuery 源码锋利的jQuery 源码锋利的jQuery 源码锋利的jQuery 源码锋利的jQuery 源码锋利的jQuery 源码
锋利的jQuery.pdf锋利的jQuery.pdf锋利的jQuery.pdf锋利的jQuery.pdf
锋利的jquery-第一版源代码。好东西,值得拥有
jquerydemo锋利的jQuery的demojquerydemo锋利的jQuery的demo 个人在看锋利的jQuery所作的demo
人民邮电出版社的锋利的jQuery 实例。jquery是一个轻量级的库,拥有强大的选择器,来自此书的实例
锋利的jQuery第2版源码下载 书中代码
jquery实例+锋利的jquery+api,很好的学习资料 千万别错过哦
锋利jquery 最新 源码
锋利的JQuery第二版
锋利的jQuery(第2版) 锋利的jQuery(第2版) 锋利的jQuery(第2版) 锋利的jQuery(第2版) 锋利的jQuery(第2版)
《锋利的jQuery(第2版)》是2012年7月1日人民邮电出版社出版的图书。本书适合所有对jQuery技术感兴趣的Web设计者和前端开发人员阅读和参考。
锋利的jQuery(第2版)超高清.pdf,文字版,非常清晰,。。
jQuery学习资料 锋利的Jquery 源码 锋利的Jquery 源码 锋利的Jquery 源码
《锋利的jQuery》循序渐进地对jQuery的各种函数和方法调用进行了介绍,读者可以系统地掌握jQuery的选择器、DOM操作、事件和动画、AJAX应用、插件、jQuery Mobile、jQuery各个版本变化、jQuery性能优化和技巧等知识点...
jQuery Mobile 快速 入门
锋利的jquery小例子
《锋利的jQuery》是人民邮电出版社在2009年6月出版的一本书籍。 本书循序渐进地对jQuery的各种函数和方法调用进行了介绍,读者可以系统地掌握jQuery的DOM操作、事件监听和动画、表单操作、AJAX以及插件方面等知识点...