jQuery知識整理
一:簡單介紹jQuery
jQuery是一個輕量級的,兼容多瀏覽器的JavaScript庫。
jQuery使用戶能方便的處理HTML Document、Events、實現電話效果、方便的與Ajax進行交互,能夠極大的簡化JavaScript編程。
jQuery的宗旨:"Write less, do more".
二:jQuery的優勢
是一款輕量級的框架,核心文件才幾十kb,加載起來速度極快;
豐富的DOM選擇器,jQuery的選擇器用起來很方便,查找元素的代碼量先對原生JS來說減省許多;
鏈式表達式,Query的鏈式操作可以把多個操作寫在一行代碼裏,更加簡潔;
簡化了js操作css的代碼,並且代碼的可讀性也比js要強,支持事件、樣式、動畫;
Ajax操作支持,jQuery簡化了AJAX操作,後端只需返回一個JSON格式的字符串就能完成與前端的通信;
跨瀏覽器兼容,jQuery基本兼容了現在主流的瀏覽器,不用再為瀏覽器的兼容問題而傷透腦筋;
插件擴展開發。jQuery有著豐富的第三方的插件,例如:樹形菜單、日期控件、圖片切換插件、彈出窗口等等基本前端頁面上的組件都有對應插件,並且用jQuery插件做出來的效果很炫,並且可以根據自己需要去改寫和封裝插件,簡單實用。
三:相關了解
jQuery內容:
選擇器;篩選器;樣式操作;文本操作;屬性操作;文檔處理;事件;動畫效果;插件;each、data、Ajax。
jQuery版本:
1.x:兼容IE678,使用最為廣泛的,官方只做BUG維護,功能不再新增。因此一般項目來說,使用1.x版本就可以了,最終版本:1.12.4 (2016年5月20日)
2.x:不兼容IE678,很少有人使用,官方只做BUG維護,功能不再新增。如果不考慮兼容低版本的瀏覽器可以使用2.x,最終版本:2.2.4 (2016年5月20日)
3.x:不兼容IE678,只支持最新的瀏覽器。需要註意的是很多老的jQuery插件不支持3.x版。目前該版本是官方主要更新維護的版本
jQuery下載鏈接:
jQuery官網
jQuery文檔鏈接:
jQuery文檔手冊
四:jQuery對象
jQuery對象是通過對jQuery包裝DOM對象後產生的,是jQuery獨有的對象,jQuery對象可以使用jQuery裏的方法
註意:約定俗成的,在聲明一個jQuery對象變量的時候在變量名前面加上$,這樣,當拿到一個對象的時候,就能夠很好的區分類型了。
var dEle = document.getElementsByTagName(‘div‘) //獲取DOM對象的div標簽 var $dEle = $(‘div‘) //獲取jQuery對象的div標簽 jQuery對象 = $(DOM對象) //DOM對象轉換成jQuery對象 DOM對象 = jQuery對象)[0] //jQuery對象轉換成dom對象
jQuery對象雖然是DOM對象轉化而來的,但是只能使用jQuery的方法,同樣的DOM對象也只能使用DOM對象的方法。
var dEle = document.getElementsByTagName(‘div‘)[0] dEle.classList.add(‘c2‘) //DOM對象修改CSS dEle = $(‘div‘) $dEle.addClass(‘c2‘) //jQuery對象修改CSS
五:jQuery的基礎語法
$(selector).action()
5.1:查找標簽
基本選擇器
$("#id") //id選擇器 $("tagName") //標簽選擇器 $(".className") //class選擇器 $("div.c1") // 找到有c1 class類的div標簽 $("*") //所有元素選擇器 $("#id, .className, tagName") //組合選擇器
層級選擇器
x和y可以為任意選擇器
$("x y");// x的所有後代y(子子孫孫) $("x > y");// x的所有兒子y(兒子) $("x + y")// 找到所有緊挨在x後面的y $("x ~ y")// x之後所有的兄弟y
基本篩選器
:first // 第一個 :last // 最後一個 :eq(index)// 索引等於index的那個元素 :even // 匹配所有索引值為偶數的元素,從 0 開始計數 :odd // 匹配所有索引值為奇數的元素,從 0 開始計數 :gt(index)// 匹配所有大於給定索引值的元素 :lt(index)// 匹配所有小於給定索引值的元素 :not(元素選擇器)// 移除所有滿足not條件的標簽 :has(元素選擇器)// 選取所有包含一個或多個標簽在其內的標簽(指的是從後代元素找)
示例
$("div:has(h1)")// 找到所有後代中有h1標簽的div標簽 $("div:has(.c1)")// 找到所有後代中有c1樣式類的div標簽 $("li:not(.c1)")// 找到所有不包含c1樣式類的li標簽 $("li:not(:has(a))")// 找到所有後代中不含a標簽的li標簽
實例:自定義模態框,使用jQuery實現彈出和隱藏功能
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>自定義模態框</title> <style> .cover { position: fixed; left: 0; right: 0; top: 0; bottom: 0; background-color: darkgrey; z-index: 999; } .modal { width: 600px; height: 400px; background-color: white; position: fixed; left: 50%; top: 50%; margin-left: -300px; margin-top: -200px; z-index: 1000; } .hide { display: none; } </style> </head> <body> <input type="button" value="彈" id="i0"> <div class="cover hide"></div> <div class="modal hide"> <label for="i1">姓名</label> <input id="i1" type="text"> <label for="i2">愛好</label> <input id="i2" type="text"> <input type="button" id="i3" value="關閉"> </div> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script> var tButton = $("#i0")[0]; tButton.onclick=function () { var coverEle = $(".cover")[0]; var modalEle = $(".modal")[0]; $(coverEle).removeClass("hide"); $(modalEle).removeClass("hide"); }; var cButton = $("#i3")[0]; cButton.onclick=function () { var coverEle = $(".cover")[0]; var modalEle = $(".modal")[0]; $(coverEle).addClass("hide"); $(modalEle).addClass("hide"); } </script> </body> </html>View Code
屬性選擇器
[attribute] [attribute=value]// 屬性等於 [attribute!=value]// 屬性不等於
示例
<input type="text"> <input type="password"> <input type="checkbox"> $("input[type=‘checkbox‘]");// 取到checkbox類型的input標簽 $("input[type!=‘text‘]");// 取到類型不是text的input標簽
表單常用篩選
:text
:password
:file
:radio
:checkbox
:submit
:reset
:button
表單對象屬性
:enabled
:disabled
:checked
:selected
示例
<form> <input name="email" disabled="disabled" /> <input name="id" /> </form> $("input:enabled") // 找到可用的input標簽
<select id="s1"> <option value="beijing">北京市</option> <option value="shanghai">上海市</option> <option selected value="guangzhou">廣州市</option> <option value="shenzhen">深圳市</option> </select> $(":selected") // 找到所有被選中的option
篩選器
下一個元素:
$("#id").next() $("#id").nextAll() $("#id").nextUntil("#i2")
上一個元素:
$("#id").prev() $("#id").prevAll() $("#id").prevUntil("#i2")
父親元素:
$("#id").parent() $("#id").parents() // 查找當前元素的所有的父輩元素
$("#id").parentsUntil() // 查找當前元素的所有的父輩元素,直到遇到匹配的那個元素為止。
兒子和兄弟元素:
$("#id").children();// 兒子們 $("#id").siblings();// 兄弟們
查找元素:
$("#id").find()// 搜索所有與指定表達式匹配的元素。這個函數是找出正在處理的元素的後代元素的好方法
補充:
.first()// 獲取匹配的第一個元素 .last()// 獲取匹配的最後一個元素 .not()// 從匹配元素的集合中刪除與指定表達式匹配的元素 .has()// 保留包含特定後代的元素,去掉那些不含有指定後代的元素。
示例:左側菜單
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>左側菜單示例</title> <style> .left { position: fixed; left: 0; top: 0; width: 20%; height: 100%; background-color: rgb(47, 53, 61); } .right { width: 80%; height: 100%; } .menu { color: white; } .title { text-align: center; padding: 10px 15px; border-bottom: 1px solid #23282e; } .items { background-color: #181c20; } .item { padding: 5px 10px; border-bottom: 1px solid #23282e; } .hide { display: none; } </style> </head> <body> <div class="left"> <div class="menu"> <div class="title">菜單一</div> <div class="items"> <div class="item">111</div> <div class="item">222</div> <div class="item">333</div> </div> <div class="title">菜單二</div> <div class="items hide"> <div class="item">111</div> <div class="item">222</div> <div class="item">333</div> </div> <div class="title">菜單三</div> <div class="items hide"> <div class="item">111</div> <div class="item">222</div> <div class="item">333</div> </div> </div> </div> <div class="right"></div> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script> $(".title").click(function (){ // jQuery綁定事件 // 隱藏所有class裏有.items的標簽 $(".items").addClass("hide"); //批量操作 $(this).next().removeClass("hide"); }); </script>View Code
5.2操作標簽
樣式操作
addClass();// 添加指定的CSS類名。 removeClass();// 移除指定的CSS類名。 hasClass();// 判斷樣式存不存在 toggleClass();// 切換CSS類名,如果有就移除,如果沒有就添加。
示例:開關燈和模態框
CSS
css("color","red")//DOM操作:tag.style.color="red"
示例:
$("p").css("color", "red"); //將所有p標簽的字體設置為紅色
位置:
offset()// 獲取匹配元素在當前窗口的相對偏移或設置元素位置 position()// 獲取匹配元素相對父元素的偏移 scrollTop()// 獲取匹配元素相對滾動條頂部的偏移 scrollLeft()// 獲取匹配元素相對滾動條左側的偏移
返回頂部示例
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>位置相關示例之返回頂部</title> <style> .c1 { width: 100px; height: 200px; background-color: red; } .c2 { height: 50px; width: 50px; position: fixed; bottom: 15px; right: 15px; background-color: #2b669a; } .hide { display: none; } .c3 { height: 100px; } </style> </head> <body> <button id="b1" class="btn btn-default">點我</button> <div class="c1"></div> <div class="c3">1</div> <div class="c3">2</div> <div class="c3">3</div> <div class="c3">4</div> <div class="c3">5</div> <div class="c3">6</div> <div class="c3">7</div> <div class="c3">8</div> <div class="c3">9</div> <div class="c3">10</div> <div class="c3">11</div> <div class="c3">12</div> <div class="c3">13</div> <div class="c3">14</div> <div class="c3">15</div> <div class="c3">16</div> <div class="c3">17</div> <div class="c3">18</div> <div class="c3">19</div> <div class="c3">20</div> <div class="c3">21</div> <div class="c3">22</div> <div class="c3">23</div> <div class="c3">24</div> <div class="c3">25</div> <div class="c3">26</div> <div class="c3">27</div> <div class="c3">28</div> <div class="c3">29</div> <div class="c3">30</div> <div class="c3">31</div> <div class="c3">32</div> <div class="c3">33</div> <div class="c3">34</div> <div class="c3">35</div> <div class="c3">36</div> <div class="c3">37</div> <div class="c3">38</div> <div class="c3">39</div> <div class="c3">40</div> <div class="c3">41</div> <div class="c3">42</div> <div class="c3">43</div> <div class="c3">44</div> <div class="c3">45</div> <div class="c3">46</div> <div class="c3">47</div> <div class="c3">48</div> <div class="c3">49</div> <div class="c3">50</div> <div class="c3">51</div> <div class="c3">52</div> <div class="c3">53</div> <div class="c3">54</div> <div class="c3">55</div> <div class="c3">56</div> <div class="c3">57</div> <div class="c3">58</div> <div class="c3">59</div> <div class="c3">60</div> <div class="c3">61</div> <div class="c3">62</div> <div class="c3">63</div> <div class="c3">64</div> <div class="c3">65</div> <div class="c3">66</div> <div class="c3">67</div> <div class="c3">68</div> <div class="c3">69</div> <div class="c3">70</div> <div class="c3">71</div> <div class="c3">72</div> <div class="c3">73</div> <div class="c3">74</div> <div class="c3">75</div> <div class="c3">76</div> <div class="c3">77</div> <div class="c3">78</div> <div class="c3">79</div> <div class="c3">80</div> <div class="c3">81</div> <div class="c3">82</div> <div class="c3">83</div> <div class="c3">84</div> <div class="c3">85</div> <div class="c3">86</div> <div class="c3">87</div> <div class="c3">88</div> <div class="c3">89</div> <div class="c3">90</div> <div class="c3">91</div> <div class="c3">92</div> <div class="c3">93</div> <div class="c3">94</div> <div class="c3">95</div> <div class="c3">96</div> <div class="c3">97</div> <div class="c3">98</div> <div class="c3">99</div> <div class="c3">100</div> <button id="b2" class="btn btn-default c2 hide">返回頂部</button> <script src="jquery-3.2.1.min.js"></script> <script> $("#b1").on("click", function () { $(".c1").offset({left: 200, top:200}); }); $(window).scroll(function () { if ($(window).scrollTop() > 100) { $("#b2").removeClass("hide"); }else { $("#b2").addClass("hide"); } }); $("#b2").on("click", function () { $(window).scrollTop(0); }) </script> </body> </html>View Code
尺寸:
height() width() innerHeight() innerWidth() outerHeight() outerWidth()
jQuery知識整理