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