[TOC]
# JQuery認識
## 1.入口函數
執行時機是在文檔(標簽)加載完畢后立馬執行函數里面的代碼 ,不存在覆蓋問題(調用函數)
**跟window.onload的執行時機不一樣(頁面所有資源加載完畢后執行)后寫的入口函數會覆蓋前面寫的函數**
**完整寫法**
$(document).ready(function){
代碼塊;
}
**簡寫**
第一種:
$().ready(function){
代碼塊;
}
第二種:
$(function(){ 代碼塊; } )
*****
**所有的$都可以用jQuery代替**
*****
&("#id") JQ對象(默認情況下不能調用原生的屬性和方法)
document.getElementById("box") DOM對象(默認情況下只能調用原生的JS屬性和方法)
###1.0 轉換對象
#### 1.0.1 **JQ對象轉換為DOM對象**
$("#box")[0].style.backgroundColor = "red";
$("#box").get(0).style.backgroundColor = "red";
**ps: $("#box")得到的是個數組**
*****
#### 1.0.2 **DOM對象轉為JQ對象**
var divObj = document.getElementById("box);
$(divObj).show();
### 1.1.格式舉例
```
$(function(){
$("button:eq(0)").click(function(){
$("div").show(400);
});
})
```
### JQuery函數
**html():**
訪問html,顯示標簽 ,修改值時會對標簽起作用
**text():**
訪問text,只打印文字內容 ,修改值時會直接把標簽當初是文本內容修改

##2選擇器
### 2.1基本選擇?
**分類:**
ID選擇?、類選擇?、標簽選擇?、并集選擇?和通配符選擇?。

```
~~~
<button>選擇所有段落標簽</button>
<button>選擇class為left的標簽</button>
<button>選擇id為box的標簽</button>
<button>選擇所有不分類型標簽</button>
<button>選擇所有標題標簽</button>
<button>選擇ul里面的li標簽</button>
<button>選擇body下的第一級所有標簽并添加邊框</button>
<button>選擇p后的一個div</button>
<button>選擇p后的所有div</button>
<p>段落標簽</p>
<p>段落標簽</p>
<p>段落標簽</p>
<div class="left">類選擇器</div>
<div class="left">類選擇器</div>
<div id="box">id選擇器</div>
<h1>標題1標簽</h1>
<h2>標題2標簽</h2>
<h3>標題3標簽</h3>
<ul>
<li>列表項</li>
<li>列表項</li>
<li>列表項</li>
</ul>
<ol>
<li>列表項</li>
<li>列表項</li>
<li>列表項</li>
</ol>
~~~
$("button:eq(0)").click(function () {/*所有的p標簽*/
$("p").css("background-color", "red");
});
$("button:eq(1)").click(function () {/*class類名為left*/
$(".left").css("background-color","red");
});
$("button:eq(2)").click(function () {/*id名為id*/
$("#box").css("background-color","pink");
});
$("button:eq(3)").click(function () {
$("*").css("background-color","pink");/*所有不分標簽類型的標簽 通配符 所有包括body*/
});
~~~
```
### 2.2.層級選擇器
**分類**
后代選擇器 、 直接后代選擇器 、 下一個相鄰兄弟和后面所有兄弟元素

```
~~~
$("button:eq(5)").click(function () { /*后代選擇器*/
$("ul li").css("background-color","red");
});
$("button:eq(6)").click(function () {/*選擇body下的第一級所有標簽并添加邊框 直接后代選擇器*/
$("body>*").css("border","1px solid red");
});
$("button:eq(7)").click(function () {/*p后的第一個div 中間不能有別的標簽隔開.否則會未選擇到任何標簽 下一個相鄰的兄弟*/
$("p+div").css("border","1px solid red");
});
$("button:eq(8)").click(function () { /*后面所有的兄弟*/
$("p~div").css("border","1px solid red");/*p后所有的div。如果中間有別的標簽也可以獲取到后面所有的div*/
~~~
```
**拓展選擇方法:**
在通過$(" ")選擇到元素后,可以通過:
prev() 獲取上一個相鄰兄弟
prevAll() 獲取 前面所有兄弟
next() 獲取下一個相鄰兄弟
nextAll() 獲取后面所有兄弟
### 2.3基本篩選選擇器
eq后的值是指確定的值

```
~~~
$(function () {
$("button:eq(0)").click(function () {
$("li:first").css("background-color","pink");
});
$("button:eq(1)").click(function () {
$("li:last").css("background-color","pink");
});
$("button:eq(2)").click(function () {/*選擇所有的排除最后一個*/
$("li:not(:last)").css("background-color","pink");
});
$ ("button:eq(3)").click(function () {
$("li:not(:eq(1))").css("background-color","pink");/*選擇所有排除第二個*/
});
$("button:eq(4)").click(function () {
$("li:even").css("background-color","pink");/*索引值為偶數的*/
});
$("button:eq(5)").click(function () {
$("li:odd").css("background-color","pink");/*索引值為奇數*/
});
$("button:eq(6)").click(function () {
$("li:gt(4)").css("background-color","pink");/*大于5的li >>*/
});
$("button:eq(7)").click(function () {
$("li:lt(4)").css("background-color","pink");/*小于5的li <<*/
});
$("button:eq(8)").click(function () {
$("li:eq(4)").css("background-color","pink");/*等于5的li*/
});
~~~
```
### 2.4內容篩選選擇器
根據元素中的文字內容或所包含的子元素特征獲取元素 (可模糊匹配)

```
~~~
$(function () {
$("button:eq(0)").click(function () {
$("div:contains('天')").css("background-color","red");/*帶有天字的*/
});
$("button:eq(1)").click(function () {
$("div:empty").css("background-color","pink");/*空的標簽*/
});
$("button:eq(2)").click(function () {
$("div:parent").css("background-color","red");/*選擇含有子元素或者是文本的div元素*/
});
$("button:eq(3)").click(function () {
$("div:has('span')").css("background-color","red");/*帶有span標簽的元素*/
});
})
~~~
```
### 2.5 屬性篩選選擇器
根據元素的某個屬性獲取元素,在使用的時候我們可以匹配單個屬性也可以進行多個屬性的匹配。

### 2.6父子兄選擇器
**分類**
parent() 獲取當前標簽的父節點
parents() 獲取當前標簽的祖先節點
parentsUntil() 獲取當前標簽的祖先節點直到… (不包含該標簽)
children() 獲取當前標簽的子節點
siblings() 獲取當前標簽的兄弟節點
```
~~~
<button>點擊選中</button>
<div class="one">
<div class="box">
<div class="box-in">我是父親
<span class="active">我是孫子</span>
</div>
</div>
</div>
~~~
<script>
$("button:eq(0)").click(function () {
// $(".active").parent().css("background-color","blue");/*父親*/
/*parents()里面不寫值會默認把所有的祖先都改變 可指定祖先*/
// $(".active").parents().css("background-color","blue");
// $(".active").parents(".box").css("background-color","blue");/*會包括指定的祖先*/
$(".active").parentsUntil(".one").css("background-color","blue");
/*一級一級祖先往上找,知道找到指定標簽為止(不包含指定標簽)*/
$(".active").siblings().css("background-color","black");/*兄弟節點*/
})
</script>
~~~
```
##3.事件
click() 點擊事件
noConflict() 轉換 把$轉換為jq (解決命名沖突)
mouseenter() 鼠標 經過事件
mouseleave() 鼠標離開事件
hover() 如果同時出現上面兩個時間可以用hover代替 兩個參數(函數)
*****
**鼠標經過離開事件例子 四種寫法**
```
~~~
// 第一種
$(".nav>ul>li").mouseenter(function () {
$(this).children("ul").show();//事件源的ul孩子
});
$(".nav>ul>li").mouseleave(function () {
$(this).children("ul").hide();
});
//第二種
$(".nav>ul>li").mouseenter(function () {
$(this).children("ul").show();
}).mouseleave(function () {
$(this).children("ul").hide();
});
// 第三種
$(".nav>ul>li").hover(function () {/*兩個參數 分別是兩個函數*/
$(this).children("ul").show();
},function () {
$(this).children("ul").hide();
})
//第四種
$(".nav>ul>li").hover(function () {/*鼠標的離開和進入可以當做是顯示隱藏的切換效果*/
$(this).children("ul").toggle();
});
```
- Javascript
- 組成
- Web API
- 初步認識DOM
- 經典案例 (使用獲取id的方法)
- 節點和元素
- 經典案例 (使用獲取節點和元素的方法)
- 函數
- 作用域鏈
- Array對象的方法
- String對象的方法
- 綁定事件
- 事件委托
- 邏輯運算
- js高級(面向對象、)
- 基本知識
- 數據類型
- 基本包裝類型的使用
- 定義變量的區別
- JavaScript對象的動態特性
- 關鍵字in
- 關鍵字delete
- 運算符
- 創建對象的方式
- 回調函數
- 高階函數
- 構造器屬性
- this指向
- hasOwnProperty屬性
- 私有成員和特權方法
- 面向對象和面向過程的基礎
- 異常捕獲
- 構造函數和普通函數的區別
- 構造函數的補充
- 原型
- 原型圖
- 獲取原型對象的方法
- 原型對象的訪問和設置
- 判斷某個對象是否是指定實例對象的原型對象
- constructor
- isPrototypeOf
- instanceof
- 檢測對象是公有還是私有
- 核心概念
- 繼承
- 混入式繼承
- 原型式繼承
- 原型鏈繼承
- 借用構造函數繼承(call繼承,經典繼承)
- 組合式繼承(推薦)
- class繼承
- __ proto __屬性
- call方法和apply方法
- Fuction相關知識
- 創建函數的方式
- eval函數
- 淺拷貝和深拷貝
- 淺拷貝
- 深拷貝
- Object相關知識
- Object原型屬性和方法
- Object靜態成員對象
- 案例
- 數組去重
- 閉包
- 語法
- DOM事件和閉包
- 定時器和閉包
- 即使對象初始化
- 閉包的變形
- 設計模式
- 單例模式
- 發布訂閱模式(觀察者模式)
- 工廠模式
- 命名空間模式
- 同步和異步
- 垃圾回收機制
- get和set
- JQuery
- 動畫方法
- 事件
- 方法
- 節點
- 方法er
- HTML + CSS
- 經驗
- flex布局
- px,em ,rem區別
- 清除浮動
- Less
- UI框架
- 一.Bootstrap框架
- 常用類名
- 二 .Animate.css
- 三.WOW.JS
- 四.scrollReveal.js
- 五.zepto框架
- zepto選擇器
- 滑動事件
- tap觸摸事件
- zepto動畫
- 六,swipe框架
- 分頁器
- 左右按鈕和循環輪播
- 底部滾動和輪播方向
- 自動播放和切換效果
- 移入移除事件
- swipe結合animate.css
- 總結
- 滾滾屏
- 自動化構建工具
- 1.gulp
- 使用gulp編譯less成css,并最終壓縮css
- 壓縮css
- 合并和壓縮js
- 壓縮圖片
- 編寫server服務
- 包管理器
- 介紹
- brew
- npm十全大補湯
- ES6
- class類
- class類的使用
- class類的繼承結構
- let 和const
- 結構語法
- 模板字符串
- 化簡寫法
- 形參的默認值
- ...rest參數
- rest剩余參數
- 擴展參數
- 正則表達式
- 創建正則表達式的方式
- 構造函數
- 字面量的方式
- 其他(修飾符)
- 判斷是否匹配成功
- 正則表達式案例
- 常見的匹配原則
- 驗證密碼長度
- 表單驗證
- 正則提取
- 正則替換
- vue
- 插值操作
- Mustache語法
- 過濾器
- 綁定相關知識
- 綁定對象
- 單向綁定
- 雙向綁定
- 綁定屬性
- 動態綁定style
- 綁定事件
- 補充
- 綁定語法
- 基礎
- vue介紹
- MVVM
- 計算屬性
- 指令
- v-cloak
- 顯示和隱藏
- 循環
- 自定義指令
- 本地緩存
- localStorage
- sessionStorage
- 對象劫持
- 組件
- 局部組件
- 父子組件
- 全局組件
- 組件訪問實例數據
- 父傳子
- 子傳父
- 兄弟傳兄弟
- 插槽
- methods,computed,watch的區別
- Vue.observable()
- vue.config.js配置
- 修飾符
- .sync修飾符
- $attrs和$listeners
- Node.js
- 使用Node執行js代碼的兩種方式
- 交互模式
- 解釋js文件
- http模板
- request對象的使用
- express框架
- 安裝
- post
- 獲取請求參數
- post返回頁面
- 重定向到別的接口
- get
- 返回頁面
- get獲取請求參數
- 請求靜態資源
- 熱重啟
- Ajax
- 請求方式
- get請求
- post請求
- jQuery中的ajax方法
- JQuery中的get請求
- jQuery中的post請求
- 微信小程序
- 認識
- 引入樣式的方式
- 綁定數據
- 小程序組件
- scroll - view 可滾動視圖區域
- 發起請求
- template模板
- rich-text
- web-view
- open-data
- checkbox組件
- label組件
- radio組件
- picker組件
- swiper組件
- Git
- 跨域
- 左側固定,右側自適應
- vuex
- 如何解決vuex頁面刷新數據丟失問題
- 數據結構
- 樹
- 問題累積
- Axios
- 前端路由