天天看點

學習JQuery

1. 重要基礎

  1. 簡寫加載函數,事情必須在DOM加載之後,否則無法綁定對象
$(document).ready()
$(function(){}); //推薦縮寫           
  1. 使用包括 JQuery 庫外文法類似的 JavaScript 庫時,注意命名沖突
Jquery.noConflict() 
var 
$$
 = JQuery; //換成 
$$
 調用Jquery函數           

2. 基礎選擇器

(選擇器使用css1,css2的全部選擇器文法,以及部分css3文法。)

  1. 對 id 元素使用選擇器: 預設對第一個元素外的其他元素"失明",傳回第一個對象。
  2. 調用屬性 .length 或函數 .size() 檢視對象集合的數量
  3. 擷取對象集合裡的元素 .get(0) 或加下标 [0]
  4. 群組選擇器: 逗号列舉
$("label, #text, .blue")           
  1. 後代選擇器
$("#nav h4 span")
$("#nav").find("h4").find("span")           
  1. 子代選擇器(隻能是直接的父子關系)
$("#nav > span")
$("#nav").children("span")           
  1. 擷取 span 的下一個同級兄弟元素 p
$("div span + p")
$("div span").next()           
  1. 擷取 span 以下的所有同級兄弟元素 p
$("div span ~ p")
$("div span").nextAll("p")           
  1. 同級向上(向下)選取元素,直到找到 label 元素為止(不包括 label 元素)
.prevUntil("label") //向上
.nextUntil("label") //向下           
  1. 尋找同級兄弟
.siblings("input")
.prevAll() 加上 .nextAll()           

3. 過濾選擇器

  1. 第一個(最後一個)元素
:first
:last           
  1. 排除滿足條件的元素
.not(.blue)           
  1. 奇(偶)序元素
:odd
:even           
  1. 等于/大于/小于
:eq(2)
:gt(3)
:lt(5)           
  1. 标題元素(h1 ~ h6)
:header           
  1. 正在執行動畫的元素
:animated           
  1. 正被聚焦的元素
:focus           
  1. 包含指定文本的元素
:contains(".com")           
  1. 不包含文本或者無子元素的元素
:empty           
  1. 包含文本或子元素的元素
:parent           
  1. 具有指定類的元素
:has(".blue")           
  1. 不可見(可見)的元素
:hidden
:visible           
  1. 每個父元素的第一個(最後一個)子元素
:first-child
:last-child           
  1. 隻有一個子元素的元素
:only-child           
  1. 每個指定子元素的元素
:nth-child(odd)           
  1. 比對的元素
.is(".bule")
.hasClass("blue")
.filter(".blue")
.slice(1, 4) //第二個到第四個元素           

4. 表單選擇器

  1. 選擇指定元素
:input
:button           
  1. 選擇不同類型的input元素
:text
:password
:radio
:checkbox
:submit
:reset
:image
:button
:file
:hidden           
  1. 選擇不同屬性的元素
:enabled
:disabled
:checked
:selected           

5. 基本 DOM 操作

  1. 擷取(設定)元素html内容
.html() //加參數則設定           
  1. 擷取(設定)元素文本内容
.text() //加參數則設定           
  1. 擷取(設定)表單元素内容
.val() //加參數則設定           
  1. 擷取(設定)元素屬性值
.attr() //加參數則設定
.attr({A: a, B: b}) //設定多個參數           
  1. 擷取(設定)css樣式
.css() //加參數則設定,多參數設定同上           
  1. 添加css樣式
.addClass("blue")
.addClass("blue red green")           
  1. 移除css樣式
.removeClass("blue") //移除多個類同上           
  1. 切換css樣式
.toggleClass("blue") //切換多個類同上
.toggleClass(function(){}, [rate]) //自定義切換規則,第二個為可選參數頻率           
  1. 擷取(設定)高度(寬度)
.height() //加參數則設定 
.width() //加參數則設定
.height(function(object, value){}) //object指定元素、value指定元素的高度           
  1. 擷取内外邊框高度寬度
.innerWidth()
.innerHeight()
.outerWidth() //包括邊框和内邊距
.outerHeight() //同上
.outerWidth(true) //同上并包括外邊框
.outerHeight(true) //同上           
  1. 相對偏移
.offset() //相對于視口
.position() //相對于父元素           
  1. 滾動條相關(擷取/設定)
.scrollTop() //垂直
.scrollLeft() //水準           

6. DOM節點操作

  1. 元素内部前面插入節點
.prepend(html) //插入節點html
.prepend(function(new, parent)) //向parent元素内部前面插入節點new
.prependTo(target) //将元素移至指定元素target           
  1. 元素内部後面插入節點
.append(html)
.append(function(new, parent){})
.appendTo(target)           
  1. 元素外部前面插入節點
.before()
.before(function(new, parent){})
.insertBefore(target)           
  1. 元素外部後面插入節點
.after()
.after(function(new, parent){})
.insertAfter(target)           
  1. 包裹節點
.wrap(target) //參數可為html内容或者對象節點
.wrap(function(target){})
.unwrap() //解除一層包裹                                                                                                                           
  1. 批量包裹
.wrapAll(parent) //被元素parent包裹
.wrapInner(parent) //包裹元素parent的子元素           
  1. 複制節點
.clone(true) //加上true表示同時複制綁定事件、不加則隻複制元素和内容           
  1. 删除節點
.remove(‘p’) //可選參數           
  1. 保留事件行為的删除
.detach()           
  1. 删除節點内容
.empty()           
  1. 替換節點
.replaceWith('span')
.replaceAll('p')           

7. 基本事件

(以下函數均含匿名函數)

  1. 點選、輕按兩下
.click()
.dbclick()           
  1. 點選彈起瞬間、彈起後
.mouseup()
.mousedown()           
  1. 滑鼠穿出入觸發(包括子元素)
.mouseenter()
.mouseleave()           
  1. 滑鼠穿出入觸發(不包括子元素)
.mouseover()
.mouseout()           
  1. 滑鼠移動
.mousemove()           
  1. 鍵盤按下彈起瞬間、彈起後
.keyup()
.keydown()
.keypress()           
  1. 焦點激活與丢失
.focus()
.blur()
.focusin()
.focusout()           
  1. 其他事件
.select() //文本標明
.change() //值被改變
.submit //表單送出
.scroll() //滾動條拖動
.unload() //解除安裝本頁面
.hover(fun1, [fun2]) //滑鼠移入(移出)           

8. 事件對象

(function(event){})

  1. 頁面坐标(屬性)
pageX //相對于頁面
pageY
screenX //相對于顯示屏
screenY
clientX //相對于視口
clientY           

9. 進階事件

  1. 模拟使用者行為
.trigger("click", [param1, param2])
.trigger("click", [{paramA1 : a, paramA2 : b}, {paramB1, paramB2}])           
  1. 綁定(解綁)事件
.on("click dbclick", [function(){}])
.off("click")           
  1. 僅觸發一次事件
.one() //用法同.on           

10. 動畫

  1. 顯示/隐藏
.show() //可選參數持續時間,如3000表示3秒,或者“slow”
.hide() //添加第二參數閉包函數則動畫完畢後執行           
  1. 自定義動畫
.animate({'top': '+=88px', 'height': '200px'}, 'slow')           
  1. 隊列動畫
.queue([function([next]){ ......; [next()[]}])
.dequeue() //兩個函數都是執行下一個函數           
  1. 上下卷動
.slideUp()
.slideDown()
.slidToggle()           
  1. 動畫操作
.delay()
.stop()           
  1. 動畫屬性
.fx.interval //運作幀數
.fx.off = ture //關閉動畫效果           

11. AJAX

.load()
  1. 第一個參數:目的 url 或者帶選擇器的 url (可帶get的參數)
  2. 第二個參數:不為空則為post方式
  3. 第三個參數:閉包函數(傳回資料,狀态,XMLHttpRequest對象)
.get()
.post()
.AJAX() //底層函數

(以下為傳入參數的屬性)

  1. url
  2. type
  3. timeout
  4. data
  5. dataType
  6. beforeSend
  7. complete
  8. success
  9. error
  10. global
  11. cache
  12. content
  13. contentType
  14. async
  15. processData
  16. dataFilter
  17. ifModified
  18. jsonp
  19. username
  20. password
  21. scriptCharset
  22. xhr
  23. traditional
$.ajaxStart()
$.ajaxStop()
$.ajaxError()
$.ajaxSuccess()
$.ajaxComplete()
$.ajaxSend()
$.ajaxSetup() //請求預設值來初始化參數
$('form').serialize() //擷取表單所有值
$('form').serializeArray() //傳回鍵值對的Json對象

12. 工具函數

  1. 除去字元串兩邊空格
$.trim(str)           
  1. 周遊數組(對象)
$.each(arr, function(index, value){})           
  1. 資料篩選
$.grep(arr, function(element, index){})           
  1. 修改資料
$.map(arr, function(element, index){})           
  1. 合并數組
$.merge(arr1, arr2)           

6.測試類型函數

$.isArray(obj)
$.isFunction(obj)
$.isEmptyObject(obj)
$.isPlainObject(obj) //純粹對象
$.isNumeric(data)
$.isWindow(data) //window對象
$.contains(obj) //包含其他節點           
  1. 判斷類型函數
$.type(data)           
  1. 将對象鍵值對轉換為URL字元串鍵值對
$.param(obj)           
  1. 調用内部函數
$.proxy(obj, 'objFunc') //傳回obj對象裡的objFunc函數           

13. 插件

1.Validate.js

(jquery.validata.js 、 jquery.validate.messages_zh.js)

  1. 相關代碼
$('form').validate()           
  1. 必填項
class = “required”           
  1. 郵箱
class = "email"           
  1. 不得少于兩位
minlength = "2"           
  1. 網址
class = "url"           

2. 自動完成插件 (jquery.autocomplete.js 、 jquery-migrate-1.2.1.js)

var name = ['John', 'Jack', 'Tom', 'Kitty'];
$('form input[name=name]').autocomplete(name, {minChars: 0}) //0表示不需要輸入一個字元即可顯示所有備選資料           

3. 自定義插件

分類
  1. 封裝對象方法的插件
  2. 封裝全局函數的插件
  3. 選擇器插件
插件規範
  1. 名字: jquery.[name].js
  2. 局部對象附加 jquery.fn 對象上,全局函數附加在 jquery 上
  3. 插件内部,this 指向的是目前的局部對象
  4. 可以通過 this.each 來周遊所有元素
  5. 所有的方法或插件,必須用分号結尾,避免出現問題
  6. 插件應該傳回的是 JQuery 對象,以保證可鍊式連綴
  7. 避免插件内部使用 $ ,如果要使用,請傳遞 JQuery 進去

繼續閱讀