本章的主題是jQuery事件處理,如果你對事件處理不了解,可以看這篇文章《JavaScript學習筆記整理(10):Event事件》。
bind(eventType,function)、bind(eventType,data,function) 為jQuery對象內(nèi)每一個匹配元素添加一個事件處理函數(shù),支持可選的data參數(shù)。
bind(eventType,boolean)
bind(map)
one(eventType,funciton)、one(eventType,data,function)
unbind()、unbind(eventType)、unbind(eventType,boolean)
unbind(Event)
$('.box').bind('click',function(event){})
$('.box').bind('click mousedown',funciton(){});
var handle = {
mousedown: function(){},
mouseup: function(){}
};
$('.box').bind(handle);
var obj = {name:'tg'};
$('.box').bind('click',obj,funciton(event){
console.log(event.data.name); // "tg"
});
$('.box').unbind('mousedown');
$('.box').bind('click',function(event){
$(this).unbind(event);
})
$('.box').one('click',function(){
alert(1);
});
on(events,selector,data,function)、on(map,selector,data) 為匹配元素綁定事件處理函數(shù)
off(events,selector,function)、off(map,selector) 撤銷使用on方法綁定的事件處理函數(shù)
delegate(selector,eventType,function)、delegate(selector,eventType,data,function)、delegate(selector,map) 使用selector過濾jQuery對象內(nèi)所有匹配元素,然后綁定事件處理函數(shù)
undelegate()、undelegate(selector,eventType) 撤銷使用delegate方法綁定且匹配選擇器與事件類型的事件處理函數(shù)
$('.box').on('click',function(event){});
$('.box').on('click mousedown',function(){});
$('.box').on('click',{color:'red'},function(event){});
$('.box').on('click','p',function(){}); // 為div.box中的所有p元素綁定click事件處理函數(shù)
<div class="box">
<p>123</p><p>34</p>
</div>
$('.box').on('click','p',function(){ alert(1); });
$('.box').append('<p>新添加</p>');
trigger(eventType) 觸發(fā)綁定在jQuery對象內(nèi)匹配元素的特定事件類型(由eventType決定)上的事件處理函數(shù)。
trigger(Event) 觸發(fā)綁定在jQuery對象內(nèi)匹配元素的特定事件(由Event事件決定)上的事件處理函數(shù)。
triggerHandler(eventType) 觸發(fā)綁定在jQuery對象內(nèi)第一個匹配元素上的事件處理函數(shù),既不冒泡,也不實施事件的默認行為。
<div class="box">123</div>
<button>模擬點擊</button>
$('.box').on('click',function(){
alert(1);
});
$('button').on('click',function(){
$('.box').trigger('click');
});
2、事件方法
jQuery提供了很多常用事件綁定事件處理函數(shù)。
2.1 document對象事件方法
load(function) 即load事件,在頁面中的子元素及資源文件載入完成時觸發(fā)
ready(function) 在頁面中的元素已經(jīng)處理完成,DOM就緒時觸發(fā)
unload(function) 即unload事件,當用戶離開當前頁面時觸發(fā)
2.2 瀏覽器事件方法
error(function) 即error事件,在載入外部資源文件出錯時觸發(fā)(如載入圖片出錯)
resize(function) 即resize事件,當瀏覽器窗口大小發(fā)生變化時觸發(fā)
scroll(function) 即scroll事件,當用戶拖動滾動條時觸發(fā)
2.3 鼠標事件方法
click(function) 即click事件,在用戶點擊鼠標按鈕時觸發(fā)
dblclick(function) 即dblclick事件,在用戶雙擊鼠標按鈕時觸發(fā)
focusin(function) 即focusin事件,在元素得到焦點時觸發(fā)
focusout(function) 即focusout事件,在元素失去焦點時觸發(fā)
hover(function)、hover(function,function) 即hover事件,在鼠標進入或離開元素時觸發(fā),若指定兩個參數(shù),進入時會觸發(fā)第一個函數(shù),離開時會觸發(fā)第二個函數(shù),否則都會觸發(fā)第一個。
mousedown(function) 即mousedown事件,當在某元素上按下鼠標時觸發(fā)
mouseenter(function) 即mouseenter事件,當鼠標進入某元素顯示區(qū)域時觸發(fā)
mouseleave(function) 即mouseleave事件,當鼠標離開某元素顯示區(qū)域時觸發(fā)
mousemove(function) 即mousemove事件,當鼠標在某元素顯示區(qū)域內(nèi)移動時觸發(fā)
mouseout(function) 即mouseout事件,當鼠標離開某元素顯示區(qū)域時觸發(fā)
mouseover(function) 即mouseover事件,當鼠標進入某元素顯示區(qū)域時觸發(fā)
mouseup(function) 即mouseup事件,當按下后釋放鼠標按鈕時觸發(fā)
mouseenter()與mouseover()、mouseleave() 與mouseup()的區(qū)別?
mouseenter()和mouseover()作用一樣,但前者不支持冒泡,后者支持。
mouseleave()和mouseup()作用一樣,但前者不支持冒泡,后者支持。
2.4 表單事件方法
blur(function) 即blur事件,在元素失去焦點時觸發(fā)
change(function) 即change事件,在元素的值發(fā)生變化時觸發(fā)
focus(function) 即focus事件,在元素獲得焦點時觸發(fā)
select(function) 即select事件,在用戶選中某個可選框時觸發(fā)
submit(function) 即submit事件,當用戶提交表單時觸發(fā)
2.5 鍵盤事件方法
keydown(function) 即keydown事件,當用戶按下一個鍵后觸發(fā)
keypress(function) 即keypress事件,當用戶按下一個鍵并釋放后觸發(fā)
keyup(function) 即keyup事件,當用戶釋放一個鍵時觸發(fā)
keypress事件會在按下鍵盤按鍵時觸發(fā)。它與keydown事件類似,但keypress著重的是按下該鍵輸入了哪個字符(只有能夠打印字符的鍵才會觸發(fā)keypress),keydown著重的是按下了哪個鍵(按下任何鍵都可觸發(fā)keydown)。對于諸如Ctrl、Alt、Shift、Delete、Esc等修飾性和非打印鍵,請監(jiān)聽keydown事件。
3、jQuery Event對象的屬性和方法
Event對象主要英語獲取事件的相關(guān)信息。
currentTarget 返回正在處理(響應)該事件的元素
data 返回綁定事件時傳遞的data對象
isDefaultPrevented() 若已經(jīng)調(diào)用過preventDefault()方法,返回true
isImmediatePropagationStopped() 若已經(jīng)調(diào)用過stopImmediatePropation()方法,返回true
originalEvent 返回未經(jīng)jQuery處理的原始DOM Event對象
pageX、pageY 返回相對于頁面左上角的鼠標位置
preventDefault() 用來阻止當前事件的默認行為
relatedTarget 僅對鼠標事件有效,返回該鼠標事件有關(guān)的元素
result 返回處理該事件的最后一個事件處理函數(shù)的返回值
stopImmediatePropagation() 立即阻止調(diào)用當前事件的其他事件處理函數(shù)
stopPropagation() 阻止事件冒泡
target 返回觸發(fā)事件的元素
timeStamp 返回事件發(fā)生的時間
type 返回事件類型
which 在鍵盤和鼠標事件中,返回用戶按下的鍵或鼠標按鈕
了解原生的JavaScript事件對理解jQuery事件很有幫助,可以看這篇文章《JavaScript學習筆記整理(10):Event事件》。
更多建議: