婚假也不能虛度。
1 1:jquery可以加載多個ready函數,而原始的js只能加載一次onload 2 2:用dom對象得到的對象不能使用jquery中的方法,比如var p=document.getElementById("id"),此時p不能這樣使用p.html(),而應該使用innerHTML。同樣,jquery對象不能使用dom中的方法,如果juqery中改寫了dom中的方法,則可以使用dom中的方法。 3 3:jquery對象轉換為dom對象的方法: 4 <input type="text" id="a" value="111111"> 5 var input=$('#a') 6 a:使用索引,alert(input[0].value) 7 b:使用get,alert(input.get[0].value) 8 4:dom對象轉換為juqery對象: 9 用$()把DOM對象包裝起來就OK: 10 var input = document.getElementById('a'); 11 alert($(input).val()); 12 5:jquery與其他js庫共存 13 <script> 14 var sowhat = jQuery.noConflict()//自定義,可代替jQuery 15 或者直接jQuery.noConflict(),然后用jQuery調用方法即可,注意Q不能小寫,默認是大寫 16 alert('這是jquery彈出的'+sowhat('#a').val()); 17 alert('這是prtotype彈出的'+$F('a')); 18 </script> 19 6: >號表示子標簽,項目中一般不用css表達式,因為它不停地計算會使瀏覽器特別卡 20 $(function(){ 21 $('div>a').css('color','red'); 22 }); 23 <div> 24 <a href="###">abcdefg</a> 25 <p><a href="###">1234567890</a></p> 26 </div> 27 7:jquery優勢: 28 a:兼容性強大,完美支持css1-2.0 29 b:完美容錯機制,eg:即使沒有對應標簽也不會報錯 30 8:選擇器: 31 1:id :$('#id') 32 eg:$('#p1').css('color','red');//代替了#p1{color:red;} 33 2:calss :$('.p1') 34 eg:$('.p1').css('color','red');//代替了.p1{color:red;} 35 3:標簽選擇器(不推薦*選擇器) 36 eg:$('p').css('color','red');//代替了.p1{color:red;} 37 4:多重選擇器 38 eg: <span>123</span> 39 <div>12312</div> 40 <script> 41 $(function(){ 42 $('p,div').css('color','red'); 43 }); 44 </script> 45 5:層次選擇器 46 E F e元素所欲的后代元素 47 E>F e元素的子元素 48 E+next e元素后緊鄰的標簽為next的兄弟元素,等於next() 49 E~siblings e元素后的所有的標簽為siblings的兄弟元素,等於nextAll() 50 eg:給div標簽后緊鄰的p標簽添加顏色 51 $('div+p').css('color','red'); 52 $('div').next().css('color','red'); 53 給div標簽后所有的p標簽添加顏色 54 $('div~p').css('color','red'); 55 $('div').nextAll().css('color','red'); 56 6:過濾選擇器:(用法:只舉一例,其他參考手冊) 57 :first 58 $('p:first').css(); 59 注意:標簽內嵌套標簽時單引號和雙引號錯開使用,若計算偶數則下標從0算起 60 7:屬性選擇器 61 A:<p title="js">safs</p> 62 選取title為js的p標簽添加紅色,注意title可以為原有標簽,也可以為自己自定義的標簽 63 $('p[title=js]').css('color','red'); 64 或者$('p[title]').css('color','red'); 65 B:選取含有title和myuu屬性的p元素,注意title可以為原有標簽,也可以為自己自定義的標簽 66 $('p[title=js][myuu]').css('color','red'); 67 C:子元素:div的子標簽p的第一個標簽 68 $('div p:first-child').css('color','red'); 69 8:表單元素及表單元素屬性選擇器 70 $(':input[type=checkbox]').val(); 71 $(':input:disabled').val(); 72 $(':input[disabled=disabled]').val(); 73 $('select:selected').val(); 74 9:dom篩選 75 $('p:eq(0)').css(); //給指定下標為0的p標簽添加顏色 76 $('p').filter('#second').css(); //奇偶數添加 77 $('p').click(function(){//單擊p標簽給當前添加顏色 78 if($(this).is('.first')){ 79 $(this).css('backgound','red'); 80 } 81 }); 82 $('p').not(':last').css();//給p標簽添顏色,除了最后一個 83 $('p').not('#secone').css();//給p標簽添顏色,除了id為second的p標簽 84 $('input').map(function(){ //將一組元素轉換為數組(一般不用,因為有一個序列化的方法比這個更好用) 85 return $(this).val(); 86 }).get().join(',');//,即將三組文本框中的值用逗號隔開並轉為字符串 87 slice():$('p').slice(1,5).css();// 選中下標為1,2,3,4的元素,包含1,不包含5。也可傳入負數 88 10:dom遍歷查找:(注:返回一組元素的都可以加參數,返回一個的不能加參數) 89 $('#p1').parent().css(); //通過子節點p1找到父節點wrap 90 $('#p1').parents('.outer').css();//選取祖先元素,通常加參數,表示范圍為class為outer的標簽為止 91 $('p1').offsetParent().css();//offsetParent()返回父元素中第一個其position設為relative或者absolute的元素,僅對可見元素有效 92 $('#p2').siblings('div').css();//選擇p2所有的兄弟元素(可加參數) 93 $('span').parent().css('color','red').end().css('color','blue')//先設置紅色再設置成藍色,顏色可重疊。鏈式操作,end()函數 94 $('input').each(function(){//用的不多,因為效率低,后面有工具函數可以代替它 95 alert($(this).val()); 96 }); 97 11:特殊符號的處理:有的加1個\,有的加2個\\ 98 $('input[name=gender[]]')沒加轉義符,報錯 99 $('input[name=gender\\[\\]]')加了轉義符,正確 100 $('input[name=\'checkbox\']')正確 101 12:表格隔行變色 102 ----------js代碼----------- 103 var table=document.getElementById('table'); 104 var tr=table.getElementByTagName('tr'); 105 for(var i=0;i<tr.length;i++){ 106 if(i%2==1){ 107 tr[i].style.background('blue'); 108 }else{ 109 tr[i].style.background('red'); 110 } 111 } 112 -----------jquery代碼------- 113 $('table tr:even').css('backgrpund','red'); 114 $('table tr:odd').css('backgrpund','blue'); 115 使用end()函數可以優化為一行代碼: 116 $('table tr').fliter(':even').css().end().fliter(':odd').css() 117 13:tab標簽頁 118 $('#ul li').click(function(){ 119 $(this).addClass('current').siblings().removeClass('current');//點擊li的時候切換樣式 120 $(#content>div).eq($(this).index()).show().siblings().hide();//根據li的索引值,來確定哪個div顯示哪個div隱藏 121 上面兩行代碼可優化為一行: 122 $(this).addClass('current').siblings().removeClass('current').parent().next().children().eq($(this).index()).show().siblings().hide(); 123 }); 124 14:jquery選擇器的優化: 125 a:最快的是id選擇器:能用id獲取到的標簽盡量不用class選擇器 126 b:假如p標簽下有一個class為a,則盡量:$('p.a'),當然$('.a')這樣寫也可以。 127 假如有一個div標簽,id為a,則直接:$('#id'),一定不要$('div#id')這樣寫。 128 c:假如div有一個子div,則盡量使用直接使用id獲取,不要通過父元素找。 129 d:通過find()來找,盡量不使用上下文查找 130 eg:$('li.item-li').find('li').css(); 131 e:鏈式操作比緩存快很多,只有在要通過一個元素查找另外的元素的時候才需要用到緩存,如果直接對某一個元素進行修改,則直接用鏈式操作。 132 15:dom操作: 133 a:創建節點:分為內部插入和外部插入。 134 內部插入:插入后是子元素 135 外部插入:插入后是兄弟元素 136 $('body').append('<div>div標簽</div>');//給頁面添加了一個div標簽 137 或者也可以這樣寫: 138 var str='<div>div標簽</div>'; 139 $('body').append(str); 140 $('p').append('<div>div標簽</div>');//向p標簽的尾部插入div標簽,div是p的所有子標簽中排序在最后一個 141 $('<div>div標簽</div>').appendTo('p');//結果和上一句一樣 142 16:添加樣式 143 <style> 144 .bg{background:red;} 145 .white{color:#fff;} 146 </style> 147 <script> 148 $('p').addClass('bg white'); 149 $('p').removeClass('bg white'); 150 //toggleClass();//切換樣式 151 </script> 152 再比如: 153 <p>11111111</p> 154 <script> 155 /*$('p').css('background','red').css('color','white').css('border','10px solid #abcdef');*/ 156 $('p').css({ 157 'backgroundColor':'red', 158 'color':'white', 159 'border':'10px solid #abcdef' 160 }); 161 //建議大家把css屬性名用引號引起來 162 </script> 163 17:jquery中的事件和對象 164 18:jquery插件編寫(類級別開發,幾乎不用): 165 $.zxit={ //zxit為命名空間 166 centerDiv:function(obj){ //centerDiv為我們自己自定義的插件方法 167 obj.css({ 168 'top':($(window).height()-div.height())/2, 169 'left':($(window).width()-div.width())/2, 170 'position':'absolute' 171 }); 172 173 return obj;//返回和傳入的都是jquery對象 174 } 175 } 176 19:jquery插件編寫(對象級別開發,使用率99%): 177 a:官方模板: 178 ;(function($){ 179 $.fn.plugin=function(options){ 180 var defaults = { 181 //各種參數,各種屬性 182 } 183 var options = $.extend(defaults,options); 184 185 this.each(function(){ 186 //實現功能的代碼 187 }); 188 return this; 189 } 190 })(jQuery);