jQuery的優點css
js代碼對瀏覽器的兼容性更好html
隱式循環jquery
鏈式操做數組
jQuery是什麼? -- 高度封裝了js代碼塊的模塊,封裝了dom節點,封裝了操做dom節點的簡便方法瀏覽器
$: 就是jQuery的簡寫.app
jQuery對象和DOM對象的互相轉換dom
jQuery封裝了DOM
DOM轉換成jQuery : jQuery(DOM對象) / $(DOM對象)
jQuery轉成DOM : jQuery對象[index]
</ jQuery對象轉換成了 DOM 對象以後,能夠直接調用 DOM 提供的一些功能
代碼 | 解釋 |
---|---|
$("#id") | id選擇器 |
$("tagName") | 標籤選擇器 |
$(".className") | 類選擇器 |
$("*") | 通用選擇器 |
$("div.className") | 交集選擇器(含有className的div標籤 |
$("#id, .className, tagName") | 並集選擇器 |
代碼 | 解釋 |
---|---|
$("div li") | 後代選擇器,div下面的全部li標籤 |
$("div>ul>li") | 子代選擇器,div下面的ul標籤裏的全部裏標籤 |
$(".xxx+li") | 毗鄰選擇器,有類名xxx標籤的下一個li標籤 |
$(".xxx~li") | 弟弟選擇器,有類名xxx標籤的下面的全部li標籤 |
代碼 | 解釋 |
---|---|
$('[屬性名]') | 含有某屬性的標籤 |
$('xxx[屬性名]') | 含有某屬性的xxx標籤 |
$('選擇器[屬性名]') | 符合選擇器且含有某屬性的標籤 |
$('選擇器[屬性名='xxx']') | 符合選擇器且某屬性值='xxx'的標籤 |
$('選擇器[屬性名$='xxx']') | 符合選擇器且某屬性值以xxx結尾的標籤 |
$('選擇器[屬性名^='xxx']') | 符合選擇器且某屬性值以xxx開頭的標籤 |
$('選擇器[屬性名*='xxx']') | 符合選擇器且某屬性值包含xxx的標籤 |
$('選擇器[屬性名1] [屬性名2='xxx']') | 符合選擇器且擁有屬性1和屬性2,且屬性2的值爲xxx的標籤 |
代碼 | 解釋 |
---|---|
$('選擇器:篩選器') | 做用域選擇器選擇出來的結果 |
$('選擇器:first') | 找第一個的標籤 |
$('選擇器:last') | 找最後一個的標籤 |
$('選擇器:eq(index)') | 經過索引找的標籤 |
$('選擇器:even') | 找偶數索引的標籤 |
$('選擇器:odd') | 找奇數索引的標籤 |
$('選擇器:gt(index)') | 找大於索引的標籤 |
$('選擇器:lt(index)') | 找小於索引的標籤 |
$('選擇器:not(選擇器)') | 找沒有某選擇器的標籤 |
$('選擇器:has(標籤)') | 找含有xxx標籤的的標籤 |
代碼 | 解釋 |
---|---|
$(':text') | 找type屬性值爲text的標籤(文本框) |
$(':password') | 找type屬性值爲password的標籤(密碼框) |
$(':radio') | 找type屬性值爲radio的標籤(單選框) |
$(':checkbox') | 找type屬性值爲checkbox的標籤(多選框) |
$(':file') | 找type屬性值爲file的標籤(文件選擇框) |
$(':submit') | 找type屬性值爲submit的標籤(提交按鈕框) |
$(':reset') | 找type屬性值爲reset的標籤(重置按鈕框) |
$(':button') | 找type屬性值爲button的標籤(普通按鈕框) |
<!-- date , type的input是找不到的 -->ide
enabled //可選擇的 disabled //不可選擇 checked //默認選擇 selected //默認選擇 $(':disabled') jQuery.fn.init [input, prevObject: jQuery.fn.init(1)] $(':enabled') jQuery.fn.init(15) [input, input, input, input, input, input, input, input, input, input, input, select, option, option, option, prevObject: jQuery.fn.init(1)] $(':checked') jQuery.fn.init(4) [input, input, input, option, prevObject: jQuery.fn.init(1)] $(':selected') $(':checkbox:checked') jQuery.fn.init(2) [input, input, prevObject: jQuery.fn.init(1)] $('input:checkbox:checked') jQuery.fn.init(2) [input, input, prevObject: jQuery.fn.init(1)]
代碼 | 解釋 |
---|---|
$('ul p').siblings() | 找兄弟 |
$('ul p').prev() / next() / parent() | 找上一個哥哥 / 弟弟 / 祖宗 |
$('ul p').prevAll() / nextAll() / parents() | 找全部哥哥 / 弟弟 / 祖宗 |
$('ul p').prevUntil('選擇器') / nextUntil('選擇器') parentsUnitil('選擇器') | 找哥哥 / 弟弟 / 祖宗到某一個地方就中止 |
$('ul').children() | 找兒子 |
// 篩選方法
first()
last()
eq(index)
not('選擇器') 去掉知足選擇器條件的
filter('選擇器')交集選擇器,在全部的結果中繼續找知足選擇器要求的
find('選擇器') 後代選擇器,找全部結果中符合選擇器要求的後代
has('選擇器') 經過後代關係找當代
<!-- 注意:內容補充 -->函數
// 不要用for(i in li_list){}的方式循環一個jq對象,每一個對象會封裝方法 for(let i=0;i<li_list.length;i++){ //let 聲明的變量的做用域只在for循環中 console.log(i) }
爲button按鈕綁定單擊事件,單機按鈕彈出警告框 $('button').click( function () { alert('別點我啊') } )
$('li:first').text() //獲取第一個列表的文本內容 $('li:first').text('小白') //將第一個列表的文本值改成小白 $('li:last').html() //獲取最後一個列表的內容 $('li:last').html('大白') //將最後一個列表的內容改成xxx $('li:first').html('<a href="https://www.baidu.com">百度一下</ a>') // 設置a標籤屬性 var a = document.createElement('a') a.innerText = 'AD鈣' $('li:last').html(a) // a 是dom對象 var a2 = document.createElement('a') var jqobj = $(a2) jqobj.text('旺仔') $('li:last').html(jqobj) // jqobj是jquery對象 </ html能夠接受 標籤,dom對象,jq對象
父子關係: (父).append(子) //給父級的最後添加一個子 (子).appendTo(父) //將子添加到父級的最後 (父).prepend(子) //給父級的最前添加一個子 (子).prependTo(父) //將子添加到父級的最前 兄弟關係: 參考點.before(插入內容) //在參考點以前插入內容 $(插入內容).insertBefore(參考點) //將內容插入在參考點以前 參考點.after(插入內容) //在參考點以後插入內容 $(插入內容).insertAfter(參考點) //將內容插入在參考點以前 </ 若是被添加的標籤本來就在文檔樹中,就至關於移動,參考點能夠是標籤,id,class等
remove / detach / empty var obj = $('button').remove() //刪除標籤和事件,被刪除的對象作返回值,將對象從新添加回去,有標籤但沒有事件 var obj = $('button').detach() //刪除標籤保留事件,被刪掉的對象作返回值,將對象從新添加回去,有標籤也有事件 $('ul').empty() //清空ul裏面的li標籤,ul標籤仍保留(清空內部內容,保留自己)
$('li').replaceWith(p) //用p對象內容替換全部的li標籤 $(p).replaceAll('li') //將全部的li標籤替換成p對象內容
var btn = $(this).clone() //克隆標籤但不能克隆事件 var btn = $(this).clone(true) //克隆標籤和事件 $('button').click( function () { var btn = $(this).clone(true); $(this).after(btn); } )
attr 獲取屬性的值 $('a').attr('href') 設置/修改屬性的值 $('a').attr('href','http://www.baidu.com') 設置多個屬性值 $('a').attr({'href':'http://www.baidu.com','title':'baidu'}) removeAttr $('a').removeAttr('title') //刪除title屬性 # 若是一個標籤只有true和false兩種狀況,適合用prop處理 $('input').prop('checked'); //查看是否有某屬性,返回true或false $('input').prop('checked',false); //取消所有選擇 $('input').prop('checked',true); //所有選擇
添加類 addClass $('div').addClass('red') //添加一個類 $('div').addClass('red bigger') //添加多個類 刪除類 removeClass $('div').removeClass('bigger') //刪除一個類 $('div').removeClass('red bigger') //刪除多個類 轉換類 toggleClass //有就刪除,沒有就添加 $('div').toggleClass('red') $('div').toggleClass('red bigger')
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> </head> <body> <input type="text"> <input type="password"> <input type="radio" name="sex" value="1" checked>男 <input type="radio" name="sex" value="2">女 <input type="checkbox" name="hobby" value="1" checked>足球 <input type="checkbox" name="hobby" value="2">音樂 <input type="checkbox" name="hobby" value="3">遊戲 <input type="checkbox" name="hobby" value="4">電影 <select name="city" id=""> <option value="1">北京</option> <option value="2">上海</option> <option value="3">天津</option> <option value="4">山東</option> <option value="5">河南</option> </select> </body> <script> $(':text').val() //查看值 $(':text').val('123456'); //設置value值爲xxx $(':password').val('456456');//設置value值爲xxx $(':radio').val([2]); //選擇value值爲2的選擇 $(':checkbox').val([1,3]); //選擇value值爲1,3的選項 $('select').val([5]) //選擇value值爲5的城市 </script> </html> # 對於選擇框 : 單選,多選,下拉選擇 -- 設置選中的值須要放在數組中.
$('div').css('background-color','red') //設置一個樣式 $('div').css({'height':'100px','width':'100px'}) //設置多個樣式
$(window).scrollLeft() //水平滾動條距離左邊的距離 $(window).scrollTop() //垂直滾動條距離頂部的距離
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> div{ background-color: tomato; } </style> <script src="../jQuery3.4.1.js"></script> </head> <body> <div></div> </body> <script> // $('div').css({'width':'100px','height':'100px'}) $('div').height(100); //設置content高度 $('div').height(); //查看content中content的高度 $('div').width(100); //設置content寬度 $('div').width(); //查看content中content的寬度 $('div').css('padding','20px'); //設置padding距離 $('div').innerHeight(); //查看content+padding的高度 $('div').innerWidth(); //查看content+padding的寬度 $('div').css({'border':'5px','border-style':'solid'}); //設置border的寬度 $('div').outerHeight(); //查看content+padding+border的高度 $('div').outerWidth(); //查看content+padding+border的寬度 $('div').css('margin','10px'); //設置margin的距離 $('div').outerHeight(true); //查看content+padding+border+margin的高度 $('div').outerWidth(true); //查看content+padding+border+margin的寬度 $('div').innerHeight(500) //設置值,改變的是content的高度 </script> </html> # 設置值:變得永遠是content的值
slied滑動系列 sliedDown : 向下滑動顯示 siledUp : 向上滑動隱藏 sliedToggle : down和up交替 # 動畫時間用毫秒錶示,也能夠加回調函數 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ position: relative; float: right; height: 40px; width: 120px; background-color: lightblue; } .box{ position: absolute; height: 100px; width: 300px; background-color: lightcoral; top: 40px; right: 0; display: none; } .car{ position: absolute; width: 120px; line-height: 40px; text-align: center; top: 0; right: 0; } </style> <script src="../jQuery3.4.1.js"></script> </head> <body> <div class="container"> <div class="car">購物車(<span>0</span>)</div> <div class="box"></div> </div> </body> <script> var block = false; $('.car').click( function () { // $('.box').slideToggle(500); if(block){ $('.box').slideUp(500,fn2); //fn1 , fn2 是回調函數 block = false; }else { $('.box').slideDown(500,fn1); block = true; } function fn1() { $('.car').css('color','orange') } function fn2() { $('.car').css('color','black') } } ) </script> </html>
show系列 show : 對角滑動顯示 hide : 對角滑動隱藏 toggle : show和hide交替 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> <style> div{ height: 200px; width: 200px; background-color: lawngreen; display: block; } </style> </head> <body> <button>顯示</button> <div></div> </body> <script> $('button').click( function () { $('div').stop(); //若是沒有stop,連續點擊,執行完當前動做,纔會執行下一個動做 // $('div').show(1000) //顯示 // $('div').hide(1000) //隱藏 $('div').toggle(1000,fn) //交替 } ) function fn() { if($('button').text()==='顯示'){ $('button').text('隱藏') }else { $('button').text('顯示') } } </script> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> </head> <body> <button>點擊</button> </body> <script> // 方式一 $('button').click({'a':'b'},fn); //能夠不傳參 function fn(e){ console.log(e.data); console.log(e.data.a); console.log('小白') } // 方式二 $('button').bind('click',{'a':'b'},fn); //能夠不傳參 function fn(e) { console.log(e); //打印事件 console.log(e.data); //打印事件參數 console.log(e.data.a); //打印事件參數的值 console.log('參數') } //解除綁定事件 $('button').unbind('click',fn); </script> </html>
事件 | 解釋 |
---|---|
click(function(){...}) | 單擊事件.點擊觸發 |
blur(function(){...}) | 失去焦點 |
focus(function(){...}) | 得到焦點 |
change(function(){...}) | input框鼠標離開時,內容改變觸發 |
keyup(function(){...}) | 按下鍵盤觸發事件, 獲取字符編號: e.keyCode |
hover(function(){...}) | 鼠標懸浮觸發 |
mouseover / mouseout | 父元素綁定此事件,若是有子元素出入子元素也會觸發 |
mouseenter / mouseleave | 鼠標懸浮觸發,鼠標進入 / 離開 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> </head> <body> <input type="text"> </body> <script> $('input').focus( function () { console.log('得到焦點') } ); $('input').blur( function () { console.log('失去焦點') } ); $('input').change( function () { console.log('內容改變') } ) </script> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> <style> .mask{ position: absolute; background-color: rgba(255,255,0,0.3); width: 100%; height: 100%; top: 0; left: 0; } .tk{ position: absolute; width: 400px; height: 300px; background-color: lightblue; top: 50%; left: 50%; margin-left: -200px; margin-top: -150px; } </style> </head> <body> <input type="text"> <h1>那女孩對我說,說我保護她的夢</h1> <div class="mask"> <div class="tk"></div> </div> </body> <script> // $('input').keyup( // function (e) { // console.log(e.keyCode) //keyCode:字符的ASCLL編號 // } // ) $(window).keyup( function (e) { if(e.keyCode===27){ $('.mask').css('display','none') } } ) </script> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ position: relative; float: right; height: 40px; width: 120px; background-color: lightblue; } .box{ position: absolute; height: 100px; width: 300px; background-color: lightcoral; top: 40px; right: 0; display: none; } .car{ position: absolute; width: 120px; line-height: 40px; text-align: center; top: 0; right: 0; } </style> <script src="../jQuery3.4.1.js"></script> </head> <body> <div class="container"> <div class="car">購物車(<span>0</span>)</div> <div class="box"></div> </div> </body> <script> $('.container').mouseenter( //鼠標懸浮觸發 function () { $('.box').stop(); $('.box').slideDown(500); } ); $('.container') .mouseleave( function () { $('.box').stop(); $('.box').slideUp(500); } ) $('.container').hover( //鼠標懸浮觸發,上面兩個結合 function(){ $('.box').stop(); $('.box').toggle(500); } ) </script> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> <style> .out{ width: 500px; height: 500px; background-color: lightpink; } .inner{ position: absolute; width: 200px; height: 200px; left: 150px; top: 150px; background-color: purple; } </style> </head> <body> <div class="out"> <div class="inner"></div> </div> </body> <script> $('.out').mouseover( //進入父元素打印,進入子元素打印 function () { console.log('enter') } ); $('.out').mouseout( //出來父元素打印,出來子元素打印 function () { console.log('out') } ) </script> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .out{ width: 500px; height: 500px; background-color: lightpink; } .inner{ position: absolute; width: 200px; height: 200px; left: 150px; top: 150px; background-color: purple; } </style> <script src="../jQuery3.4.1.js"></script> </head> <body> <div class="out"> <div class="inner"></div> </div> </body> <script> $('.out').click( function () { alert('out') } ); $('.inner').click( //點擊子元素的同時,也至關於點擊了父元素 function (e) { alert('inner'); return false //阻止事件冒泡1 // e.stopPropagation() //阻止事件冒泡2 } ) </script> </html>
# 後來添加的標籤,能夠擁有以前綁定的事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> </head> <body> <div> <button>點擊1</button> </div> </body> <script> $('div').on('click','button',function () { alert('點我幹嗎') }); var btn = document.createElement('button'); $(btn).text('點擊2').appendTo('div') </script> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> <script> window.onload = function(){ //window.onload要等到全部的文檔 音視頻都加在完畢才觸發. $('button').click( //window.onload 只能綁定一次.屢次綁定,只有最後一次生效 function () { alert('點我幹嗎') } ) }; window.onload = function(){ alert('點我幹嗎') }; $(document).ready( //jQuery的方式,只等待文檔加載完畢以後就能夠執行 function () { //在同一個html頁面上能夠屢次使用 $('button').click( function () { alert('別點我') } ) } ); $(document).ready( function () { alert('別點了') } ); //jQuery的簡寫方式 $(function () { $('button').click( function () { alert('就這樣吧') }) }) </script> </head> <body> <button>點擊</button> </body> <!--<script>--> <!-- $('button').click(--> <!-- function () {--> <!-- alert('點我幹嗎')--> <!-- }--> <!-- )--> <!--</script>--> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jQuery3.4.1.js"></script> </head> <body> <ul> <li>那女孩對我說</li> <li>請先說你好</li> <li>明天,你好</li> </ul> </body> <script> $('li').each( function (index,val) { //主動傳index:每一項的索引,val:每一項的標籤對象 console.log(index,val) } ) </script> </html>