I becoming love jQuery just because I only know javascript before. (^.^)
document.getElementById("someId")
↓
$("#someId")
Seems everything is getting more easier.
这是最吸引我的一个jQuery语句:
$("table tr:nth-child(even)").addClass("striped");
jQuery包装器(wrapper maybe)
jQuery归根到底还是用来对html元素进行操作的,所以首先要选择html元素,$()被我认为就是包装器,它能够把里面的字符串解析成类似于css样式一样的东西,然后去html页面中选择出来它们。这是第一步,我认为也是最重要的一步。
选择器(selector)
p a, 用来指定段落中的链接。$("p a")就会把它们选择出来。
jQuery vs. javascript
$("p a") 返回的是一个包装器或者称为包装集,里面包含了被选中的元素, $("p a")[0]返回的对象已经不再是一个jQuery的对象了(我就是这么理解的),而是一个javascript的对象,这个时候jQuery的方法对它就不起作用了,相对应的javascript的方法就好使了。
几个接触到的选择器:
$("p:even"), $("p:odd") 分别选中html中序数为偶数的和为奇数的段落。
$("tr:nth-child(1)") 选中所有作为第一个子节点的tr。貌似就是所有table的第一行吧,恩,是因为th也是tr的子节点,跟td一样。
$("tr > td") 选中所有作为tr子节点的td,貌似是废话哩。例子太废了,$("div span")这个比前头的要强一点 (-.-)
对下面的javascript小猿比较熟悉,小猿也貌似记得一个页面中写多个这东西是没有意义的。
window.onload = function(){...}
也就是说,它有局限性,求助于jQuery大大吧。
还是包装集:
$(document).ready(function(){...})
$(document)把DOM进行包装,返回一个包装集。
.ready()小猿目前认为它是jQuery的一个方法,也就是等待DOM加载完毕。
function(){...}是不是所谓的回调函数呢?
其实window.onload结束的标志是当整个DOM,以及资源(外部文件,图片等)加载完成之后才会触发事件,这是很令人烦恼的,据说可能会有人因为页面加载太慢而关掉了页面去找其它的页面了,我就是,除非我打开的是google搜索(欲哭无泪啊,google一禁令小猿何处去找资料啊???)
等等,jQuery又说了些令我吃惊的话:
$(function(){...})
完成了上面的任务,丝毫不差,好吧,目前我还是无法理解的。因为我真的不知道把一个函数包装起来干什么!
$(function(){ $("<p>This is something created by jQuery</p>").insertAffter("#followme"); })
能看懂,但是这个insertAffter("#followme")确实比较新颖,小猿要记住它。
扩展jQuery。
jQuery虽好,但是不万能,万能即无能,,,,哎,,,,这是干啥啊,神神叨叨的。
$.fn.disable = function(){ return this.each(function(){ if (typeof this.disable != "undefined") this.disable = true; }); };
有几个疑点,但是先不管:
$.fn 这货是啥啊?我知道他类似于或者等价于 jQuery.fn,那fn有时啥啊???
里面三个this关键字,第一个跟后两个不相同,后两个指的是同一个对象。
咱也不知道第一个this是怎么传递过来的,貌似是谁调用这个disable()方法也,谁就是这个this(应该是一个包装集)。
返回值,each()函数的返回值,应该也是一个包装集,所以这就是jQuery链得以实现的原因吧。