锋利的jQuery-读书笔记(二)
知识小点:
1、由于$()获取的永远是对象,不管括号里面的元素是否存在都会获得对象。所以检测某个元素在网页上是否存在时,不能使用以下代码:
if($("#tt")){ //do something} 而应该获取元素的长度来判断 if($("#tt").length>0){//do something}
或者转换为DOM对象来判断
if($("#tt")[0]){ //do something }
2、jQuery中选择器分为基本选择器、层次选择器、过滤选择器和表单选择器。
3、层次选择其中的$("prev+next")可以用next()方法代替而$("prev~sibling")可以用nextAll()代替。siblings()方法则可以选择所有同辈节点与前后无关。
4、:nth-child(index/even/odd/equation)选取每个父元素下的第index个子元素或者奇偶元素。注意index从1算起。
5、find()和filter()的区别,find()是在元素子集内寻找匹配元素,filter()是对自身进行筛选。
6、如果想同时对事件阻止冒泡和默认行为除了用,event.stopPropagation()和event.preventDefault,可以采用简写即在事件处理函数中返回false即return false。
7、mouseenter和mouseleave事件不冒泡且在元素的子元素上不会触发,而mouseover和mouseout事件会冒泡且在元素的子元素上会触发。
8、看书中遇到$("option:selected",this)这样的代码,一开始理解错为$("option:selected,this"),一定要区别分开$("option:selected",this)是表示$()有两个参数,第一个参数是选择器,第二个是作用域,一般省略第二个参数是默认是document,现在指定为this其实相当于$("#select1 option:selected")。
9、什么时候用trigger()还是用tiggerHandler()一定要记清楚,如trigger("blur")和triggerHandler("blur")的区别是前者也会触发浏览器默认的blur事件即失去光标,后者不会触发浏览器默认的事件。
10、当对象发生变化需要重新回到原来的对象可以调用end()方法。
11、.filter(":contains('"+( $(this).val() )+"')")这一段一开始看错引号的位置其实整个分为":contains('"和( $(this).val() )和"')"这三段组成一个字符串做为filter方法的参数。