-
非常有用~~~
? ? ? ? //多事件綁定一
? ? ? ? $("ul").on('click',function(e){
? ? ? ? ? ?alert('觸發(fā)的元素是內(nèi)容是: ' + e.target.textContent)
? ? ? ? })
發(fā)現(xiàn)點擊列表的圓點左側(cè)會出現(xiàn)ul觸發(fā),為了防止ul觸發(fā),根據(jù)on的用法,加入選擇器選項,改成如下,ul不再觸發(fā),只有l(wèi)i能夠觸發(fā)
? ? ? ? //多事件綁定一
? ? ? ? $("ul").on('click','li',function(e){
? ? ? ? ? ?alert('觸發(fā)的元素是內(nèi)容是: ' + e.target.textContent)
? ? ? ? })
查看全部 -
單擊觸發(fā),彈出警告當前事件元素的內(nèi)容查看全部
-
jQuery事件對象的屬性和方法
event.type:獲取事件的類型
event.pageX 和 event.pageY:獲取鼠標當前相對于頁面的坐標
--可以確定元素在當前頁面的坐標值
--鼠標相對于文檔的左邊緣的位置(左邊)與 (頂邊)的距離,簡單來說是從頁面左上角開始
--即是以頁面為參考點,不隨滑動條移動而變化
event.preventDefault() 方法:阻止默認行為
event.stopPropagation() 方法:阻止事件冒泡
事件是可以冒泡的,為防止事件冒泡到DOM樹上,也就是不觸發(fā)的任何前輩元素上的事件處理函數(shù)
event.which:獲取在鼠標單擊時,單擊的是鼠標的哪個鍵
event.currentTarget : 在事件冒泡過程中的當前DOM元素
this和event.target的區(qū)別:
js中事件是會冒泡的,所以this是可以變化的,但event.target不會變化,它永遠是直接接受事件的目標DOM元素;
.this和event.target都是dom對象
如果要使用jquey中的方法可以將他們轉(zhuǎn)換為jquery對象。比如this和$(this)的使用、event.target和$(event.target)的使用;
查看全部 -
卸載事件off()方法
- 通過.on()綁定的事件處理程序
- 通過.o?ff() 方法移除該綁定
eg:?
綁定2個事件
$("elem").on("mousedown?mouseup",fn)
刪除一個事件
$("elem").off("mousedown")
刪除兩個事件
$("elem").off("mousedown?mouseup")
快捷方式刪除所有事件,這里不需要傳遞事件名了,節(jié)點上綁定的所有事件將全部銷毀
$("elem").off()
查看全部 -
on()的高級用法
委托機制
----提供了一個選擇器
eg:
?//給body綁定一個click事件
? ? //沒有直接給.aaron元素綁定點擊事件
? ? //通過委托機制,點擊.aaron元素的時候,事件觸發(fā)
? ? $('body').on('click', '.aaron', function(e) {
? ? ? // alert(e.target.textContent)????
??
? ? ? ?alert($(this).text())
? ? })
///
第二參數(shù)并不是委托給它
例如老頭子body開了個公司,如果沒有第二參數(shù),那全公司所有人都可以調(diào)用財務(wù)
如果有第二參數(shù)a,
當a是最底層員工時,即沒有子元素,那么全公司只有a可以調(diào)用財務(wù)
當a是非底層員工時,即a有后代或子元素,那么全公司只要是a或a的后代都可以調(diào)用財務(wù)
冒泡是從內(nèi)往外冒泡,a在最里面的時候只有a可以觸發(fā)事件,a如果在中間,那么從最里面一直冒泡冒到a,這些后代都可以觸發(fā)
this肯定是指dom樹中觸發(fā)事件的dom元素(不可能是集合)
在這里指的就是---.aaron和.aaron的后代的合集中觸發(fā)事件的這個元素
這里給body綁定事件,on()函數(shù)里面的第二個參數(shù)是'.aaron',就是委托給'.aaron'了,雖然綁定在了body上,
因為委托給'.aaron'了,所以點擊'.aaron'或它的后代才能觸發(fā),
查看全部 -
on()的多事件綁定
方法一:
最常見的給元素綁定一個點擊事件,對比一下快捷方式與on方式的不同
$("#elem").click(function(){})??//快捷方式 $("#elem").on('click',function(){})?//on方式
方法二:
多個事件綁定同一個函數(shù)
?$("#elem").on("mouseover?mouseout",function(){?});
通過空格分離,傳遞不同的事件名,可以同時綁定多個事件
eg:
$("#test2").on('mousedown mouseup', function(e) {
? ? ? ? $(this).text('觸發(fā)事件:' + e.type)
? ? })????????????///????e.type--->type意思是事件類型,
////? $(this).text('觸發(fā)事件:' + e.type) 就是要在text中顯示當前觸發(fā)的事件類型
方法三:
多個事件綁定不同函數(shù)
$("#elem").on({ ????mouseover:function(){},?? ????mouseout:function(){} });
方法四:
將數(shù)據(jù)傳遞到處理程序
function?greet(?event?)?{ ??alert(?"Hello?"?+?event.data.name?);?//Hello?慕課網(wǎng) } $(?"button"?).on(?"click",?{ ??name:?"慕課網(wǎng)" },?greet?);
查看全部 -
jQuery鍵盤事件之keypress()事件
?跟keydown是非常相似
keypress事件與keydown和keyup的主要區(qū)別
- 只能捕獲單個字符,不能捕獲組合鍵
- 無法響應(yīng)系統(tǒng)功能鍵(如delete,backspace)
- 不區(qū)分小鍵盤和主鍵盤的數(shù)字字符
查看全部 -
jQuery鍵盤事件之keydown()與keyup()事件
eg:
//監(jiān)聽鍵盤按鍵
? ? //獲取輸入的值
? ? $('.target1').keydown(function(e) {
? ? ? ? $("em:first").html(e.target.value)
? ? });
? ? //監(jiān)聽鍵盤按鍵
? ? //獲取輸入的值
? ? $('.target2').keyup(function(e) {
? ? ? ? $("em:last").text(e.target.value)
? ? });
//在.target2中每次鍵盤松手的那個按鍵是e
讓最后一個em的text為每一個目標按鍵的value
在input元素上綁定keydown事件會發(fā)現(xiàn)一個問題:
每次獲取的內(nèi)容都是之前輸入的,當前輸入的獲取不到
因為:
keydown事件觸發(fā)在文字還沒敲進文本框,這時如果在keydown事件中輸出文本框中的文本,得到的是觸發(fā)鍵盤事件前的文本? /? 而keyup事件觸發(fā)時整個鍵盤事件的操作已經(jīng)完成,獲得的是觸發(fā)鍵盤事件后的文本
查看全部 -
jQuery表單事件之submit事件
可以通過submit事件,監(jiān)聽下提交表單的這個動作
具體能觸發(fā)submit事件的行為:
- <input type="submit">
- <input type="image">
- <button type="submit">
- 當某些表單元素獲取焦點時,敲擊Enter(回車鍵)
查看全部 -
jQuery表單事件之select事件
?當 textarea 或文本類型的 input 元素中的文本被選擇時,會發(fā)生 select 事件。
select事件只能用于<input>元素與<textarea>元素
eg:觸發(fā)元素的select事件 ? ?$(_input_).select(function(e){ ? ? ? ?alert(e.target.value) ? ?}) ? ?$(_
查看全部 -
jQuery表單事件之change事件
<input>元素,<textarea>和<select>元素的值都是可以發(fā)生改變的,開發(fā)者可以通過change事件去監(jiān)聽這些改變的動作
input元素
監(jiān)聽value值的變化,當有改變時,失去焦點后觸發(fā)change事件。對于單選按鈕和復(fù)選框,當用戶用鼠標做出選擇時,該事件立即觸發(fā)。
?
select元素
對于下拉選擇框,當用戶用鼠標作出選擇時,該事件立即觸發(fā)
?
textarea元素
多行文本輸入框,當有改變時,失去焦點后觸發(fā)change事件
?
change事件很簡單,無非就是注意下觸發(fā)的先后行為
查看全部 -
jQuery表單事件之blur與focus事件
?表單處理事件focusin事件與focusout事件,
同樣用于處理表單焦點的事件還有blur與focus事件
它們之間的本質(zhì)區(qū)別:
是否支持冒泡處理
<div> ??<input?type="text"?/> </div>
其中input元素可以觸發(fā)focus()事件
div是input的父元素,當它包含的元素input觸發(fā)了focus事件時,它就產(chǎn)生了focusin()事件。
focus()在元素本身產(chǎn)生,focusin()在元素包含的元素中產(chǎn)生
blur與focusout也亦是如此
查看全部 -
jQuery鼠標事件之focusout事件
當一個元素,或者其內(nèi)部任何一個元素失去焦點的時候,比如input元素,用戶在點擊失去焦的時候,如果開發(fā)者需要捕獲這個動作,jQuery提供了一個focusout事件
查看全部 -
jQuery鼠標事件之focusin事件
?當一個元素,或者其內(nèi)部任何一個元素獲得焦點的時候,例如:input元素,用戶在點擊聚焦的時候,如果開發(fā)者需要捕獲這個動作的時候,jQuery提供了一個focusin事件
eg: function fn(e) {
? ? ? ? ? ? ?$(this).val(e.data)
? ? ? ? }
? ? ? ? function a() {
? ? ? ? ? ? $("input:last").focusin('慕課網(wǎng)', fn)
? ? ? ? }
? ? ? ? a();
查看全部 -
jQuery鼠標事件之hover事件
$(selector).hover(handlerIn,?handlerOut)
- handlerIn(eventObject):當鼠標指針進入元素時觸發(fā)執(zhí)行的事件函數(shù)
handlerOut(eventObject):當鼠標指針離開元素時觸發(fā)執(zhí)行的事件函數(shù)
eg:? $("p").hover(
? ? ? ? function() {
? ? ? ? ? ? $(this).css("background", 'red');
? ? ? ? },
? ? ? ? function() {
? ? ? ? ? ? $(this).css("background", '#bbffaa');
? ? ? ? }
? ? );
查看全部 -
jQuery鼠標事件之mouseenter與mouseleave事件
三種參數(shù)傳遞方式與mouseover和mouseout是一模一樣的
關(guān)鍵點就是:冒泡的方式處理問題
<div?class="aaron2"> ????<p>鼠標離開此區(qū)域觸發(fā)mouseleave事件</p> </div> 這里的問題是div為什么會被觸發(fā)??原因就是事件冒泡的問題,p元素觸發(fā)了mouseover,他會一直往上找父元素上的mouseover事件,如果父元素有mouseover事件就會被觸發(fā)
而?mouseenter事件 ?mouseenter事件只會在綁定它的元素上被調(diào)用,而不會在后代節(jié)點上被觸發(fā)(上級)
查看全部 -
jQuery鼠標事件之mouseover與mouseout事件
var n = 0;
? ? ? ? //綁定一個mouseover事件
? ? ? ? $(".aaron1 p:first").mouseover(function(e) {
? ? ? ? ? ? $(".aaron1 a").html('進入元素內(nèi)部,mouseover事件觸發(fā)次數(shù):' + (++n))
? ? ? ? })
查看全部 -
jQuery鼠標事件之mousemove事件
?監(jiān)聽用戶移動的的操作
eg:
//綁定一個mousemove事件
? ? //觸發(fā)后修改內(nèi)容
? ? $(".aaron1").mousemove(function(e) {
? ? ? ? $(this).find('p:last').html('移動的X位置:' + e.pageX)? //移動時,鼠標相對于左邊的位置
? ? })
event.pageX 屬性返回鼠標指針的位置,相對于文檔的左邊緣。
查看全部 -
jQuery鼠標事件之mousedown與mouseup事件
mousedown: 鼠標按下
mouseup:鼠標彈起
?方法一:$ele.mousedown()
方法二:$ele.mousedown( handler(eventObject) )
方法三:$ele.mousedown( [eventData ], handler(eventObject) )
用event 對象的which區(qū)別按鍵,敲擊鼠標左鍵which的值是1,敲擊鼠標中鍵which的值是2,敲擊鼠標右鍵which的值是3
eg: $("button:eq(0)").mousedown(function(e) {
? ? ? ? alert('e.which: ' + e.which)
? ? })
- 如果用戶在一個元素上按下鼠標按鍵,并且拖動鼠標離開這個元素,然后釋放鼠標鍵,這仍然是算作mouseup事件
- 如果在一個元素按住了鼠標不放,并且拖動鼠標離開這個元素,并釋放鼠標鍵,這仍然是算作mousedown事件
查看全部 -
jQuery鼠標事件之click與dbclick事件]
?方法一:$ele.click()
綁定$ele元素,不帶任何參數(shù)一般是用來指定觸發(fā)一個事件,用的比較少
eg:
?$('p').click(function(){
? ? ? ? ? ? alert(this. textContent)
? ? ? ? })或
????????$('p').click(function(e) {
? ? ? ? ? ? alert(e.target.textContent)
? ? ? ? })textContent 屬性設(shè)置或者返回指定節(jié)點的文本內(nèi)容----
this
是隨時變化的,它指向的總是當前觸發(fā)的事件,而e.target
則是僅僅指向觸發(fā)該事件的節(jié)點----e是元素,名字是可變的? ??
? ? ? ? $("button:eq(1)").click(function() {
? ? ? ? ? ? $('p').click() //指定觸發(fā)綁定的事件
? ? ? ? })
方法三:$ele.click( [eventData ], handler(eventObject) )
使用與方法二一致,不過可以接受一個數(shù)據(jù)參數(shù),這樣的處理是為了解決不同作用域下數(shù)據(jù)傳遞的問題
?//不同函數(shù)傳遞數(shù)據(jù)
? ? ? ? function data(e) {
? ? ? ? ? ? alert(e.date) //e.date指向的是下面的1111
? ? ? ? }
? ? ? ? function a() {
? ? ? ? ? ? $("button:eq(2)").click(1111,data)調(diào)用date函數(shù)
? ? ? ? }????????????????????????????????????????//date接受 1111數(shù)據(jù)參數(shù)
? ? ? ? a();
查看全部 -
trigger
觸發(fā)事件函數(shù),比如你點擊了按鈕B,B上綁著trigger按鈕A的函數(shù),那么按鈕A的函數(shù)被觸發(fā)
查看全部
舉報