The Write Less,Do More
- 避免命名污染 jQuery使用立即执行函数进行操作,分别有以下三种形式;
(function(window,factory){
factory(window);
})(this,function(){
return function(){
// jQuery 调用逻辑
}
})
(function(window, undefined) {
var jQuery = function() {}
// ...
window.jQuery = window.$ = jQuery;
})(window);
- 通过对象get方法或者直接通过下标0索引就能转成DOM对象。例如:$('#id')[0]/$('#id').get(0) 获取dom
// 通过进行this属性的绑定来模拟这种'类数组'表达;
var aQuery = function(selector) {
//强制为对象
if (!(this instanceof aQuery)) {
return new aQuery(selector);
}
var elem = document.getElementById(/[^#].*/.exec(selector)[0]);
this.length = 1;
this[0] = elem;
this.context = document;
this.selector = selector;
this.get = function(num) {
return this[num];
}
return this;
}
- DOM文档加载的步骤:
(1) 解析HTML结构。
(2) 加载外部脚本和样式表文件。
(3) 解析并执行脚本代码。
(4) 构造HTML DOM模型。//ready
(5) 加载图片等外部文件。
(6) 页面加载完毕。//load
// 为了解决这种多库用$情况,jq是用'让出'原则,可用jQuery进行替代,但是要在是用前调用$.noConflict(),方法实现如下:
var
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$;
jQuery.noConflict = function (deep) {
if (window.$ === jQuery) {
window.$ = _$;
}
if (deep && window.jQuery === jQuery) {
window.jQuery = _jQuery;
}
return jQuery;
};