-
在jQuery的官方文档中,提示用户这jQuery.data()是一个低级的方法,应该用.data()方法来代替。$.data( element, key, value )可以对DOM元素附加任何类型的数据,但应避免循环引用而导致的内存泄漏问题。
这里有疑问:
$().data()是直接关联到dom上的,为什么说比$.data更好呢?
查看全部 -
第一组,通过$().data()的方式,只取到最后一个a值,之前的被覆盖
2222
2222
第二组,通过$.data的方式,取到2组b值,未覆盖
1111
2222
查看全部 -
.eq() 减少匹配元素的集合,根据index索引值,精确指定索引对象。 .get() 通过检索匹配jQuery对象得到对应的DOM元素。
.slice( start [, end ] )
作用:
根据指定的下标范围,过滤匹配的元素集合,并生成一个新的 jQuery 对象。
this.pushStack
查看全部 -
[].slice.call({ 'a': 'a', 'b': 'b', length: 2 })
(2) [empty × 2]
[].slice.call({ 1: 'a', 2: 'b', length: 2 })
(2) [empty, "a"]
[].slice.call({ 0: 'a', 1: 'b', length: 2 })
(2) ["a", "b"]
将类似数组的对象转为真正的数组
查看全部 -
var a = [1,2,{a:12}];
var b = [{a:12},4];
var arr = $.merge( a, b );
0: 1
1: 2
2: {a: 12}
3: {a: 12}
4: 4
参数只能是数组,合并不会覆盖
查看全部 -
$("#cnblogs_post_body").find(".cnblogs_code").find("img").end()表示:
$("#cnblogs_post_body").find(".cnblogs_code")
$("#cnblogs_post_body").find(".cnblogs_code").find("img").addBack()表示:
$("#cnblogs_post_body").find(".cnblogs_code").find("img") + $("#cnblogs_post_body").find(".cnblogs_code")
查看全部 -
这里有一个设计的重点,通过调用的上下文,我们来确定这个方法是作为静态还是实例处理,在javascript的世界中一共有四种上下文调用方式:方法调用模式、函数调用模式、构造器调用模式、apply调用模式:
jQuery.extend调用的时候上下文指向的是jQuery构造器 jQuery.fn.extend调用的时候上下文指向的是jQuery构造器的实例对象了
通过extend()函数可以方便快速的扩展功能,不会破坏jQuery的原型结构,jQuery.extend = jQuery.fn.extend = function(){...}; 这个是连等,也就是2个指向同一个函数,怎么会实现不同的功能呢?这就是this力量了!
fn与jQuery其实是2个不同的对象,在之前有讲解:jQuery.extend 调用的时候,this是指向jQuery对象的(jQuery是函数,也是对象!),所以这里扩展在jQuery上。而jQuery.fn.extend 调用的时候,this指向fn对象,jQuery.fn 和jQuery.prototype指向同一对象,扩展fn就是扩展jQuery.prototype原型对象。这里增加的是原型方法,也就是对象方法了。所以jQuery的API中提供了以上2个扩展函数。
查看全部 -
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;
}
查看全部 -
(function(window, undefined) { var jQuery = function() {} // ... window.jQuery = window.$ = jQuery; })(window);
从上面的代码可看出,自动初始化这个函数,让其只构建一次。详细说一下这种写法的优势:
1、window和undefined都是为了减少变量查找所经过的scope作用域。当window通过传递给闭包内部之后,在闭包内部使用它的时候,可以把它当成一个局部变量,显然比原先在window scope下查找的时候要快一些。
2、undefined也是同样的道理,其实这个undefined并不是JavaScript数据类型的undefined,而是一个普普通通的变量名。只是因为没给它传递值,它的值就是undefined,undefined并不是JavaScript的保留字。为什么要传递undefined?
Javascript 中的 undefined 并不是作为关键字,因此可以允许用户对其赋值。
总结:全局变量是魔鬼, 匿名函数可以有效的保证在页面上写入JavaScript,而不会造成全局变量的污染,通过小括号,让其加载的时候立即初始化,这样就形成了一个单例模式的效果从而只会执行一次。
查看全部 -
重要查看全部
-
?查看全部
-
爸比查看全部
-
.end()回溯
查看全部 -
this?
查看全部 -
JQuery的立即调用表达式有三种查看全部
举报