天赋不重要,努力才是路径
这是原型上添加方法
context是上下文,比如ul下的li $('li', 'ul')
就是要不要直接用jQuery的这类名,用别名$吧
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="../jquery-2.1.0.js" type="text/javascript"></script>
<title></title>
</head>
<body>
<table border="1">
<tr><td>TD #0</td><td>TD #1</td><td>TD #2</td></tr>
<tr><td>TD #3</td><td>TD #4</td><td>TD #5</td></tr>
<tr><td>TD #6</td><td>TD #7</td><td>TD #8</td></tr>
</table>
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
</ul>
<!-- <script type="text/javascript">
$("td:eq(2)").css("color", "red")
$('li').eq(2).css('background-color', 'red');
$('li').eq(-2).css('background-color', 'pink');
</script> -->
<script type="text/javascript">
function each(obj, callback, context, arg) {
var i = 0;
var value;
var length = obj.length;
for (; i < length; i++) {
arg = i;
callback.call(context || null, obj[i], arg);
}
}
var arr = ['a', 'b', 'c'];
each(arr, function(name, arg) {
console.log(arg) //相当于索引
$('body').append('<li>' + name + '</li>')
}, this, 'aaa')
</script>
</body>
</html>
学到了,
继承的方法不一样吧
这是作者一种好的编程习惯,防止你===写成了=。
不过js中如果是list.indexOf(fn) === -1 写成了 list.indexOf(fn) = -1 也是会报list.indexOf(fn) 不是左值的错,好像问题不大,但如果是以别的语言中,如C语言中,左边是一个变量,== 写成= ,这个判断是True 那就是事与愿违了!
jQuery有个很强大的特点就是读写二合一,传入一个字符串就是查找,js中在调用函数时,只会在意函数名字,不会在意参数的个数和类型,这个和C++不一样,没有重载这个概念,第二个参数没有传值,就代表他的值为undefined,
都没有验证的呀,同学
在IE8下试过了,querySelectorAll不返回自身
ajQuery is not defined
我知道了,是因为父节点有多个子节点,而子节点只有一个父节点的原因,
从上往下找必须要遍历真个树才行,而从下往上找,只需要一条线路就 可以,步骤少很多
我知道了,contexts参数和values参数在list.fire里面根本就没有用到
写法一解决的是全局变量和命名空间的问题,写法二暴露了全局变量,
123
喔,1看错了,push没理解到,SORRY。求2解说。
好像是因为这样可以少用个if,减少代码长度增加性能。。
arguments.callee(List),他就是用的外部的List,根本就不用传;这里写的有问题,这里用定时器的意义就是为了改变arguments.callee的指向而已,完全可以写个自执行函数就ok了
function Aaron(List, callback) {
(function () {
var task;
if (task = List.shift()) {
task(); // 执行函数
}
if (List.length > 0) { // 递归分解
arguments.callee();
}
else {
callback();
}
})();
}
变量名而已 用啥都能代替的那种
自问自答:
js语法的一种特殊写法,+运算符后面,会把字符串格式的i转换成数值类型。eg: "23" -> 23; "23fsf" -> NaN;
浏览器安全机制,如果当前页面是https协议加载但页面上又引用http未经加密的资源,浏览器会默认阻止该资源的加载,慕课网的jquery等资源是http,所以没加载到,解决方法就是把当前页面协议改成http就好了。
(function(global, factory) { factory(global); }(typeof window !== "undefined" ? window : this, function(window, noGlobal) { var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context );等价于(function(global) { var factory=function(global, undenfined) { var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context ); } }})(typeof window !== "undefined" ? window : this); // 其实这一部分是用来判断jQ运行环境的,第一运行环境是node.js类似CommonJS和CommonJ,第二个环境是window,就是客户端,(浏览器)
这是sizzle内部的一个解析规则,后面就用这个规则去做匹配与筛选,?应该是可以用某个字符串代替的。
我又傻了,不好意思,刚一时蒙了没想明白,现在懂了,window.$=jQuery时,指针的指向地址变了,而_$还是指向原来window.$
这不就是源码么, 当然还要自己去看一些相关的文章加深理解, 骚年, 不看3,4遍你还想理解 , too young to simple !!!
找到答案了,不包括自身。。。
querySelector/querySelectorAll下的CSS选择器是绝对的。它们并不会相对于任何特定的元素,甚至不会相对于调用querySelectorAll的元素
为了防止task为undefined,因为每次都执行了shift操作嘛