【01-讓div顯示與設置內容.html】css
使用JS操做DOM的時候,會遇到如下的一些缺點:html
//1. 獲取元素的方法太少且長,麻煩。
//2. 遍歷僞數組很麻煩,一般要嵌套一大堆的for循環。
//3. 註冊的事件會覆蓋。
//4. 有兼容性問題。
//5. 實現動畫很麻煩
【02-讓div顯示與設置內容.html】jquery
$(document).ready(function () {
$("#btn1").click(function () {
//隱式迭代:偷偷的遍歷,在jQuery中,不須要手動寫for循環了,會自動進行遍歷。
$("div").show(200);
});
$("#btn2").click(function () {
$("div").text("我是內容");
});
});
使用jQuery的優勢數組
//1. 獲取元素的方式很是的簡單,並且很是的豐富
//2. jQuery的隱式迭代特性,再也不須要書寫for循環語句。
//3. 使用jQuery徹底不用考慮兼容性問題。
//4. jQuery提供了一系列動畫相關的函數,使用很是方便。
//5. 代碼簡單、粗暴。
沒有對比,就沒有傷害,有了對比,到處戳中要害。瀏覽器
jQuery是一個快速的、輕量的、功能豐富的js庫。dom
jQuery的官網 http://jquery.com/函數
jQuery就是一個js庫,使用jQuery的話,會比使用JavaScript更簡單。學習
js庫:把一些經常使用到的方法寫到一個單獨的js文件,使用的時候直接去引用這js文件就能夠了。(animate.js、common.js)動畫
引包(引入js文件)spa
<script src="jquery-1.11.1.js"></script>
入口函數
$(document).ready(function () {
});
$(function(){
});
功能實現
$("#btnShowDiv").click(function () {
$("div").show(1000);
});
官網下載地址:http://jquery.com/download/
jQuery版本有不少,分爲1.x 2.x 3.x
大版本分類:
1.x版本:可以兼容IE678瀏覽器(最終版本1.12.4)
2.x版本:不兼容IE678瀏覽器(最終版本2.2.4)
//jQuery目前正在更新的版本
3.x版本:不兼容IE678,更加的精簡(在國內不流行,由於國內使用jQuery的主要目的就是兼容IE678),3.x版本只是在原來的基礎上增長了一些新的特性。
關於壓縮版和未壓縮版
jquery-1.12.4.min.js:壓縮版本,適用於生產環境,由於文件比較小,去除了註釋、換行、空格等東西,可是基本沒有顆閱讀性。
jquery-1.12.4.js:未壓縮版本,適用於學習與開發環境,源碼清晰,易閱讀。
入口函數的好處:
1. 等待文檔加載完成,保證可以獲取到元素
2. 造成了一個沙箱,防止全局變量污染。
兩種寫法:
//第一種寫法
$(document).ready(function() {
});
//第二種寫法
$(function() {
});
jQuery入口函數與js入口函數的對比
1. JavaScript的入口函數要等到頁面中全部資源(包括圖片、文件)加載完成纔開始執行。
2. jQuery的入口函數只會等待文檔樹加載完成就開始執行,並不會等待圖片、文件的加載。
基本概念:
1. DOM對象:使用JavaScript中的方法獲取頁面中的元素返回的對象就是dom對象。
2. jQuery對象:jquery對象就是使用jquery的方法獲取頁面中的元素返回的對象就是jQuery對象。
3. jQuery對象其實就是DOM對象的包裝集(包裝了DOM對象的集合(僞數組))
jQuery對象與DOM對象的區別:
1. DOM對象與jQuery對象的方法不能混用。
2. DOM對象能夠和jQuery對象相互轉化
DOM對象轉換成jQuery對象:【聯想記憶:花錢】
var $obj = $(domObj);
// $(document).ready(function(){});就是典型的DOM對象轉jQuery對象
jQuery對象轉換成DOM對象:
var $li = $(「li」);
//第一種方法(推薦使用)
$li[0]
//第二種方法
$li.get(0)
jQuery選擇器是jQuery爲咱們提供的一組方法,讓咱們更加方便的獲取到頁面中的元素。注意:jQuery選擇器返回的是jQuery對象。
jQuery選擇器有不少,基本兼容了CSS1到CSS3全部的選擇器,而且jQuery還添加了不少更加複雜的選擇器。【查看jQuery文檔】
jQuery選擇器雖然不少,可是選擇器之間能夠相互替代,就是說獲取一個元素,你會有不少種方法獲取到。因此咱們平時真正能用到的只是少數的最經常使用的選擇器。
jQuery徹底兼容css選擇器
名稱 | 用法 | 描述 |
---|---|---|
ID選擇器 | $(「#id」); | 獲取指定ID的元素 |
類選擇器 | $(「.class」); | 獲取同一類class的元素 |
標籤選擇器 | $(「div」); | 獲取同一類標籤的全部元素 |
並集選擇器 | $(「div,p,li」); | 使用逗號分隔,只要符合條件之一就可。 |
交集選擇器 | $(「div.redClass」); | 獲取class爲redClass的div元素 |
子代選擇器 | $(「ul>li」); | 使用>號,獲取兒子層級的元素,注意,並不會獲取孫子層級的元素 |
後代選擇器 | $(「ul li」); | 使用空格,表明後代選擇器,獲取ul下的全部li元素,包括孫子等 |
跟CSS的選擇器如出一轍。
這類選擇器都帶冒號:
名稱 | 用法 | 描述 |
---|---|---|
:eq(index) | $(「li:eq(2)」).css(「color」, 」red」); | 獲取到的li元素中,選擇索引號爲2的元素,索引號index從0開始。 |
:odd | $(「li:odd」).css(「color」, 」red」); | 獲取到的li元素中,選擇索引號爲奇數的元素 |
:even | $(「li:even」).css(「color」, 」red」); | 獲取到的li元素中,選擇索引號爲偶數的元素 |
:first | $(「li:first」).css(「color」, 」red」); | 獲取到的li元素中的第一個 |
:last | $(「li:last」).css(「color」, 」red」); | 獲取到的li元素中的最後一個 |
篩選選擇器的功能與過濾選擇器有點相似,可是用法不同,
篩選選擇器
主要是方法。
名稱 | 用法 | 描述 |
---|---|---|
children(selector) | $(「ul」).children(「li」) | 獲取當前元素的全部子元素中的li元素 |
find(selector) | $(「ul」).find(「li」); | 獲取當前元素中的後代元素中的li元素 |
siblings(selector) | $(「#first」).siblings(「li」); | 查找兄弟節點,不包括本身自己。 |
parent() | $(「#first」).parent(); | 查找父親 |
eq(index) | $(「li」).eq(2); | 至關於$(「li:eq(2)」) ,index從0開始 |
next() | $(「li」).next() | 找下一個兄弟 |
prev() | $(「li」).prev() | 找上一次兄弟 |
mouseover和mouseoverenter都有鼠標通過的意思,可是在註冊鼠標通過事件的時候,推薦使用
mouseenter
mouseover與mouseout是一對事件,當鼠標通過當前元素或者當前元素的子元素的時候,mouseover事件都會觸發【事件冒泡】。
mouseenter與mouseleave是一對事件,只有當鼠標通過當前元素時,事件會觸發,鼠標通過子元素,mousenter事件是不會觸發的。
index()
方法返回的是當前元素在全部兄弟元素裏面的索引。
<ul>
<li><a href="#">我是連接</a></li>
<li><a href="#">我是連接</a></li>
<li><a href="#">我是連接</a></li>
<li><a href="#">我是連接</a></li>
<li><a href="#">我是連接</a></li>
<li><a href="#">我是連接</a></li>
<li><a href="#">我是連接</a></li>
<li><a href="#">我是連接</a></li>
<li><a href="#">我是連接</a></li>
</ul>
當碰到這種結構的時候,推薦給li註冊事件,這樣經過index方法才能獲取到正確的索引值。