jQuery 基礎篇

1、鼠標事件
(1)click與dblclick事件(dblclick()的用法和click()的用法類似)
.click()使用方法 (click事件其實是由mousedown與mouseup 2個動作構成,所以點擊的動作只有在鬆手後才觸發)
$ele.click():元素綁定事件

$ele.click( handler(eventObject) ):指定觸發事件

$ele.click( [eventData ], handler(eventObject) ):不同函數傳遞數據

(2)mousedown與mouseup事件(mousedown()的用法和mouseup()相似)
mousedown(監聽用戶鼠標按下的操作) mouseup(監聽用戶鼠標彈起的操作)
.mousedown()的使用方法:
$ele.mousedown():彈出回調中的鼠標鍵

$ele.mousedown( handler(eventObject) ):指定觸發事件
(用event 對象的which區別按鍵,敲擊鼠標左鍵which的值是1,敲擊鼠標中鍵which的值是2,敲擊鼠標右鍵which的值是3)

$ele.mousedown( [eventData ], handler(eventObject) ):不同函數傳遞數據

(3)mouseover與mouseout事件(監聽用戶的移入移出操作,兩種用法類似)
mousemove使用方法:
$ele.mousemove():指定觸發事件

$ele.mousemove( handler(eventObject) ):綁定$ele元素,每次$ele元素觸發點擊操作會執行回調 handler函數,這樣可以針對事件的反饋做很多操作了

$ele.mousemove( [eventData ], handler(eventObject) ):使用與方法二一致,不過可以接受一個數據參數,這樣的處理是爲了解決不同作用域下數據傳遞的問題(不同函數傳遞參數)

(4)mouseenter與mouseleave事件(監聽用戶移動到內部的操作)(傳參方法與mouseover和mouseout一樣)
mouseenter事件和mouseover的區別:(jQuery推薦我們使用 mouseenter事件)
mouseover爲例:
<div class="aaron2">
<p>鼠標離開此區域觸發mouseleave事件</p>
</div>
(p元素觸發了mouseover,他會一直往上找父元素上的mouseover事件,如果父元素有mouseover事件就會被觸發
所以在這種情況下面,jQuery推薦我們使用 mouseenter事件,mouseenter事件只會在綁定它的元素上被調用,而不會在後代節點上被觸發
mouseleave和mouseout的區別
(5) hover事件(鼠標指針移入移出元素時觸發函數)
使用方法:$(selector).hover(handlerIn, handlerOut)


(6)focusin事件(當一個元素,或者其內部任何一個元素獲得焦點的時候觸發函數)
使用方法:
$ele.focusin():綁定$ele元素,不帶任何參數一般用來指定觸發一個事件
$ele.focusin( handler ):綁定$ele元素,每次$ele元素觸發點擊操作會執行回調 handler函數

$ele.focusin( [eventData ], handler ):可以接受一個數據參數,解決不同作用域下數據傳遞的問題

(7)focusout事件(當一個元素,或者其內部任何一個元素失去焦點的時候觸發函數)(用法與focusin一樣)



2、表單事件
(1)blur與focus事件(處理表單焦點問題)
focusin與focusout事件 和 blur與focus事件的區別:
focusin與focusout事件( 支持冒泡)(在元素包含的元素中產生)
blur與focus事件(不支持冒泡)(在元素本身產生)
(2)change事件(監聽<input>元素,<textarea>和<select>元素改變的動作
input元素:監聽value值的變化,當有改變時,失去焦點後觸發change事件(對於單選按鈕和複選框,當用戶鼠標做出選擇時,該事件立即觸發)
textarea元素: 多行文本輸入框,當有改變時,失去焦點後觸發change事件
select元素:對於下拉選擇框,當用戶用鼠標作出選擇時,該事件立即觸發

(3)select事件(當 textarea 或文本類型的 input 元素中的文本被選擇時,會發生 select 事件。)
select事件只能用於<input>元素與<textarea>元素

(4)submit事件(監聽提交的這個動作)
使用方法:
$ele.submit():
<div id="test">點擊觸發<div>$("ele").submit(function(){ alert('觸發指定事件')})$("#text").click(function(){ $("ele").submit() //指定觸發事件});
$ele.submit( handler(eventObject) ):綁定$ele元素,每次$ele元素觸發點擊操作會執行回調 handler函數
$ele.submit( [eventData ], handler(eventObject) ):使用與方法二一致,不過可以接受一個數據參數



3、鍵盤事件
(1)keydown()與keyup()事件(監聽鍵盤按下與鬆手兩種動作,使用方法一致,觸發條件相反)
(keydown是在鍵盤按下就會觸發,keyup是在鍵盤松手就會觸發)
keydown使用方法(每次獲取的內容都是之前輸入的,當前輸入的獲取不到):
  • 直接綁定事件 $elem.keydown( handler(eventObject) )
  • 傳遞參數 $elem.keydown( [eventData ], handler(eventObject) )
  • 手動觸發已綁定的事件 $elem.keydown()
(2)keypress()事件(用法與keydown相似)
keypress事件與keydown和keyup的主要區別
  • 只能捕獲單個字符,不能捕獲組合鍵
  • 無法響應系統功能鍵(如delete,backspace)
  • 不區分小鍵盤和主鍵盤的數字字符



4、事件的綁定和解綁
(1)on()的多事件綁定(jQuery on()方法是官方推薦的綁定事件的一個方法。
  • 基本用法:.on( events ,[ selector ] ,[ data ] )
$("#elem").click(function(){}) //快捷方式 $("#elem").on('click',function(){}) //on方式
  • 多個事件綁定同一個函數
$("#elem").on("mouseover mouseout",function(){ });
  • 多個事件綁定不同函數
$("#elem").on({
mouseover:function(){},
mouseout:function(){},
});

(2)on()的高級用法(事件委託機制)
.on( events ,[ selector ] ,[ data ], handler(eventObject) )

(3)卸載事件off()方法(通過.on()綁定的事件處理程序,通過off() 方法移除該綁定
  • 綁定2個事件
$("elem").on("mousedown mouseup",fn)
  • 刪除一個事件
$("elem").off("mousedown")
  • 刪除所有事件
$("elem").off("mousedown mouseup")

5、事件對象的使用
(1)jQuery事件對象的作用(event.target)
事件對象是用來記錄一些事件發生時的相關信息的對象。事件對象只有事件發生時纔會產生,並且只能是事件處理函數內部訪問,在所有事件處理函數運行結束後,事件對象就被銷燬。

(2)jQuery事件對象的屬性和方法
  • event.type:獲取事件的類型
  • event.pageX 和 event.pageY:獲取鼠標當前相對於頁面的座標
  • event.preventDefault() 方法:阻止默認行爲
  • event.stopPropagation() 方法:阻止事件冒泡
  • event.which:獲取在鼠標單擊時,單擊的是鼠標的哪個鍵(左鍵報告1,中間鍵報告2,右鍵報告3)
  • event.currentTarget : 在事件冒泡過程中的當前DOM元素
  • this和event.target的區別:
js中事件是會冒泡的,所以this是可以變化的,但event.target不會變化,它永遠是直接接受事件的目標DOM元素;
  • .this和event.target都是dom對象



6、自定義事件
(1)trigger事件(根據綁定到匹配元素的給定的事件類型執行所有的處理程序和行爲)
$('#elem').on('Aaron', function(event,arg1,arg2) {    alert("自觸自定義時間") });$('#elem').trigger('Aaron',['參數1','參數2'])
(2)triggerHandler事件(triggerHandler與trigger的用法是一樣的)
  • triggerHandler不會觸發瀏覽器的默認行爲,.triggerHandler( "submit" )將不會調用表單上的.submit()
  • .trigger() 會影響所有與 jQuery 對象相匹配的元素,而 .triggerHandler() 僅影響第一個匹配到的元素
  • 使用 .triggerHandler() 觸發的事件,並不會在 DOM 樹中向上冒泡。 如果它們不是由目標元素直接觸發的,那麼它就不會進行任何處理
  • .triggerHandler() 返回最後一個處理的事件的返回值。如果沒有觸發任何事件,會返回 undefined

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章