-
除了 trigger triggerHandler 其他的事件都是三種使用方式: 1. 直接調(diào)用,觸發(fā)事件: $ele.click() 2. 綁定回調(diào)函數(shù): $ele.click( handler(eventObject) ) $("#test").click(function() { //this指向 div元素 }); 3. 綁定回調(diào)函數(shù)并傳遞 event.data 數(shù)據(jù): $ele.click( [eventData ], handler(eventObject) ) $("#test").click(11111,function(e) { //this指向 div元素 //e.date => 11111 傳遞數(shù)據(jù) });查看全部
-
event.target代表當(dāng)前觸發(fā)事件的元素 事件對(duì)象是用來記錄一些事件發(fā)生時(shí)的相關(guān)信息的對(duì)象。事件對(duì)象只有事件發(fā)生時(shí)才會(huì)產(chǎn)生,并且只能是事件處理函數(shù)內(nèi)部訪問,在所有事件處理函數(shù)運(yùn)行結(jié)束后,事件對(duì)象就被銷毀查看全部
-
keydown()鍵盤按下觸發(fā)事件,keyup()鍵盤松開觸發(fā)事件查看全部
-
focusin()與focusout()支持事件冒泡,focus()與blur()不支持事件冒泡查看全部
-
trigger事件還有一個(gè)特性:會(huì)在DOM樹上冒泡,所以如果要阻止冒泡就需要在事件處理程序中返回false或調(diào)用事件對(duì)象中的.stopPropagation() 方法可以使事件停止冒泡 .trigger() 會(huì)影響所有與 jQuery 對(duì)象相匹配的元素,而 .triggerHandler() 僅影響第一個(gè)匹配到的元素使用 .triggerHandler() 觸發(fā)的事件,并不會(huì)在 DOM 樹中向上冒泡查看全部
-
event.type:獲取事件的類型 event.pageX 和 event.pageY:獲取鼠標(biāo)當(dāng)前相對(duì)于頁(yè)面的坐標(biāo) event.preventDefault() 方法:阻止默認(rèn)行為 event.stopPropagation() 方法:阻止事件冒泡 event.which:獲取在鼠標(biāo)單擊時(shí),單擊的是鼠標(biāo)的哪個(gè)鍵 event.currentTarget : 在事件冒泡過程中的當(dāng)前DOM元素查看全部
-
一個(gè)標(biāo)準(zhǔn)的"click"點(diǎn)擊事件 $(elem).on("click",function(event){ event //事件對(duì)象 }) event.target代表當(dāng)前觸發(fā)事件的元素,可以通過當(dāng)前元素對(duì)象的一系列屬性來判斷是不是我們想要的元素查看全部
-
trigger會(huì)觸發(fā)瀏覽器默認(rèn)行為,比如光標(biāo)聚集,triggerHandler則不會(huì),它只會(huì)顯示文本,觸發(fā)focus事件函數(shù)查看全部
-
通過.on()綁定的事件處理程序 通過.off() 方法移除該綁定 根據(jù)on綁定事件的一些特性,off方法也可以通過相應(yīng)的傳遞組合的事件名,名字空間,選擇器或處理函數(shù)來移除綁定在元素上指定的事件處理函數(shù)。當(dāng)有多個(gè)過濾參數(shù)時(shí),只有與這些參數(shù)完全匹配的事件處理函數(shù)才會(huì)被移除。 $("elem").off("方法名") 快捷方式刪除所有事件,這里不需要傳遞事件名了,節(jié)點(diǎn)上綁定的所有事件講全部銷毀$("elem").off()查看全部
-
event.type 獲取事件類型 event.pageX和event.pageY 獲取當(dāng)前鼠標(biāo)的頁(yè)面坐標(biāo) event.preventDefault() 阻止默認(rèn)行為 event.stopPropagation() 阻止事件冒泡 event.which 獲取鼠標(biāo)單擊時(shí)的觸發(fā)按鍵 event.currentTarget 事件冒泡過程中的當(dāng)前dom元素 等同于this event.target 直接接受事件的dom元素 通常和this一起確定事件是否為冒泡觸發(fā) 和this都時(shí)dom對(duì)象查看全部
-
委托機(jī)制 .on( events ,[ selector ] ,[ data ], handler(eventObject) ) 在on的第二參數(shù)中提供了一個(gè)selector選擇器查看全部
-
event.target target 屬性可以是注冊(cè)事件時(shí)的元素,或者它的子元素。通常用于比較 event.target 和 this 來確定事件是不是由于冒泡而觸發(fā)的。經(jīng)常用于事件冒泡時(shí)處理事件委托查看全部
-
卸載事件off()方法 通過.on()綁定的事件處理程序 通過off() 方法移除該綁定 根據(jù)on綁定事件的一些特性,off方法也可以通過相應(yīng)的傳遞組合的事件名,名字空間,選擇器或處理函數(shù)來移除綁定在元素上指定的事件處理函數(shù)。當(dāng)有多個(gè)過濾參數(shù)時(shí),只有與這些參數(shù)完全匹配的事件處理函數(shù)才會(huì)被移除 綁定2個(gè)事件 $("elem").on("mousedown mouseup",fn) 刪除一個(gè)事件 $("elem").off("mousedown") 刪除所有事件 $("elem").off("mousedown mouseup") 快捷方式刪除所有事件,這里不需要傳遞事件名了,節(jié)點(diǎn)上綁定的所有事件講全部銷毀 $("elem").off()查看全部
-
jQuery on()方法是官方推薦的綁定事件的一個(gè)方法。 基本用法:.on( events ,[ selector ] ,[ data ] ) 1.多個(gè)事件綁定同一個(gè)函數(shù)$("#elem").on("mouseover mouseout",function(){ }); 通過空格分離,傳遞不同的事件名,可以同時(shí)綁定多個(gè)事件 2.多個(gè)事件綁定不同函數(shù) $("#elem").on({ mouseover:function(){}, mouseout:function(){} }); 3.將數(shù)據(jù)傳遞到處理程序 function greet( event ) { alert( "Hello " + event.data.name ); //Hello 慕課網(wǎng) } $( "button" ).on( "click", { name: "慕課網(wǎng)" }, greet ); 可以通過第二參數(shù)(對(duì)象),當(dāng)一個(gè)事件被觸發(fā)時(shí),要傳遞給事件處理函數(shù)的查看全部
-
委托機(jī)制 .on( events ,[ selector ] ,[ data ], handler(eventObject) ) 在on的第二參數(shù)中提供了一個(gè)selector選擇器,簡(jiǎn)單的來描述下 參考下面3層結(jié)構(gòu) <div class="left"> <p class="aaron"> <a>目標(biāo)節(jié)點(diǎn)</a> //點(diǎn)擊在這個(gè)元素上 </p> </div> 給出如下代碼: $("div").on("click","p",fn) 事件綁定在最上層div元素上,當(dāng)用戶觸發(fā)在a元素上,事件將往上冒泡,一直會(huì)冒泡在div元素上。如果提供了第二參數(shù),那么事件在往上冒泡的過程中遇到了選擇器匹配的元素,將會(huì)觸發(fā)事件回調(diào)函數(shù) 為什么要用事件委托?事件委托有什么好處? 一般來說,dom是需要有事件處理程序的,我們會(huì)直接給他事件處理程序就好了,那么如果是很多dom元素需要添加事件處理呢? 比如 100個(gè)li,每個(gè)li 都有相同的click點(diǎn)擊事件,可能我們會(huì)有for循環(huán)的方法,來遍歷所有l(wèi)i,然后為每個(gè)li添加綁定事件。 這么做毫無疑問對(duì)性能有很大的影響; 在js中,訪問dom次數(shù)越多,引起瀏覽器重繪與重排的次數(shù)也就越多,就會(huì)延長(zhǎng)整個(gè)頁(yè)面的交互就緒時(shí)間 如果采用事件委托,就會(huì)將所有的操作放到j(luò)s程序里面,與dom的操作就只交互一次,這樣減少了dom交互次數(shù),性能就會(huì)提升;查看全部
舉報(bào)
0/150
提交
取消