jQuery中的常用事件總結(jié)
更新時間:2009年12月27日 03:04:47 作者:
jquery中一些事件函數(shù)使用小結(jié),需要的朋友可以參考下。
1.$(document).ready()
$(document).ready()是jQuery中響應(yīng)JavaScript內(nèi)置的onload事件并執(zhí)行任務(wù)的一種典型方式。它和onload具有類似的效果。但是也有一些差異:
當(dāng)一個文檔完全下載到瀏覽器中時,會觸發(fā)window.onload事件。而使用$(document).ready()注冊的事件處理程序會在html下載完成并解析為Dom樹之后,代碼就可以運行,但并不意味著所有關(guān)聯(lián)文件都已經(jīng)下載完畢。
一個頁面中一般只有一個onload事件處理程序,而且只能一次保存對一個函數(shù)的引用;而$(document).ready()是可以有多個。
一般來說$(document).ready()都要優(yōu)于使用onload事件處理程序。但是如果關(guān)聯(lián)文件還沒有加載完成,則類似圖像高度、寬度的屬性的調(diào)用就會有問題,因此需要在不同的時候選擇合適的方法。
$(document).ready()有三種寫法,分別是:
> $(document).ready(function() {
//this is the coding...
});
>$().ready(function() {
//this is the coding...
});
>$(function() {
//this is the coding...
});
2. 事件捕獲與事件冒泡
事件捕獲: 允許多個元素響應(yīng)事件的一種策略。在事件捕獲的過程中,事件首先會交給最外層的元素,接著再交給更具體的元素。
事件冒泡:另外一種相反的策略叫時間冒泡,當(dāng)事件發(fā)生時,會首先發(fā)送給最具體的元素,在這個元素獲得響應(yīng)機會之后,事件會向上冒泡到更一般的元素。事件冒泡有時候會產(chǎn)生副作用,導(dǎo)致始料不及的行為。
3.阻止事件冒泡的三種方法
指定默認操作
通過調(diào)用.preventDefault()方法可以在出發(fā)默認操作之前終止事件。
調(diào)用 event.stopPropagation()停止事件傳播
jQuery提供了一個.stopPropagation()方法,使用該方法可以完全阻止事件冒泡。實例代碼如下:
使用stopPropagation()方法阻止事件冒泡
$(document).ready(function() {
$('switcher').click(function(event){
if(this.id == 'switcher-narrow'){
$('body').addClass('narrow');
}
else if(this.id == 'switcher-large'){
$('body').addClass('large');
}
$('switcher .button').romoveClass('selected');
$(this).addClass('selected');
event.stopPropagation();
};)
});
使用event.tatget屬性 明確事件對象
事件處理程序中的變量event保存著事件對象。而event.tatget屬性保存著發(fā)生事件的目標(biāo)元素。這個屬性是DOM API中規(guī)定的,但是沒有被所有瀏覽器實現(xiàn)。jQuery對這個事件對象進行了必要的擴展,從而在任何瀏覽器中都能夠使用這個屬性。通過.target,可以確定DOM中首先接收到事件的元素。而且,我們知道this引用的是處理事件的DOM元素。
使用event.tatget屬性 明確事件對象阻止事件冒泡的代碼如下:
$(document).ready(function() {
$('switcher').click(function(event){
if(event.target == this)
{
$('switcher .button').toggleClass('hidden');
}
};)
});
4.常用的事件綁定
jQuery通過使用.bind()方法為元素進行事件綁定,通過使用.unbind()方法為元素進行解除綁定。而且.bind()方法是可以執(zhí)行多次綁定的,如果沒有綁定,在進行解除綁定的時候,這都是安全的。
很多時候某一個事件只需要觸發(fā)一次,隨后就要立即解除綁定,按照傳統(tǒng)的做法,我們可能會先進行事件綁定,然后在事件執(zhí)行完畢后進行解除綁定。jQuery為我們提供了一種簡寫的方法.one來專門解決上述情景下的繁瑣的代碼編寫,示例如下:
$(document).ready(function(){
$('#swotcjer').one('click',toggleStyleSwitcher);
});
5.復(fù)合事件
在進行事件捕獲的時候,常常需要捕獲組合的用戶操作,并且以多個函數(shù)作為響應(yīng),這些事件我們稱為復(fù)合事件。
jQuery提供的.read()方法就是最常用的符合事件方法之一,除此之外,還有進行交互處理的時候用到的兩個函數(shù):
.hover(over,out) 一個模仿懸停事件(鼠標(biāo)移動到一個對象上面及移出這個對象)的方法。這是一個自定義的方法,它為頻繁使用的任務(wù)提供了一種“保持在其中”的狀態(tài)。
.toggle(fn,fn) 每次點擊時切換要調(diào)用的函數(shù)。
$(document).ready()是jQuery中響應(yīng)JavaScript內(nèi)置的onload事件并執(zhí)行任務(wù)的一種典型方式。它和onload具有類似的效果。但是也有一些差異:
當(dāng)一個文檔完全下載到瀏覽器中時,會觸發(fā)window.onload事件。而使用$(document).ready()注冊的事件處理程序會在html下載完成并解析為Dom樹之后,代碼就可以運行,但并不意味著所有關(guān)聯(lián)文件都已經(jīng)下載完畢。
一個頁面中一般只有一個onload事件處理程序,而且只能一次保存對一個函數(shù)的引用;而$(document).ready()是可以有多個。
一般來說$(document).ready()都要優(yōu)于使用onload事件處理程序。但是如果關(guān)聯(lián)文件還沒有加載完成,則類似圖像高度、寬度的屬性的調(diào)用就會有問題,因此需要在不同的時候選擇合適的方法。
復(fù)制代碼 代碼如下:
$(document).ready()有三種寫法,分別是:
> $(document).ready(function() {
//this is the coding...
});
>$().ready(function() {
//this is the coding...
});
>$(function() {
//this is the coding...
});
2. 事件捕獲與事件冒泡
事件捕獲: 允許多個元素響應(yīng)事件的一種策略。在事件捕獲的過程中,事件首先會交給最外層的元素,接著再交給更具體的元素。
事件冒泡:另外一種相反的策略叫時間冒泡,當(dāng)事件發(fā)生時,會首先發(fā)送給最具體的元素,在這個元素獲得響應(yīng)機會之后,事件會向上冒泡到更一般的元素。事件冒泡有時候會產(chǎn)生副作用,導(dǎo)致始料不及的行為。
3.阻止事件冒泡的三種方法
指定默認操作
通過調(diào)用.preventDefault()方法可以在出發(fā)默認操作之前終止事件。
調(diào)用 event.stopPropagation()停止事件傳播
jQuery提供了一個.stopPropagation()方法,使用該方法可以完全阻止事件冒泡。實例代碼如下:
使用stopPropagation()方法阻止事件冒泡
復(fù)制代碼 代碼如下:
$(document).ready(function() {
$('switcher').click(function(event){
if(this.id == 'switcher-narrow'){
$('body').addClass('narrow');
}
else if(this.id == 'switcher-large'){
$('body').addClass('large');
}
$('switcher .button').romoveClass('selected');
$(this).addClass('selected');
event.stopPropagation();
};)
});
使用event.tatget屬性 明確事件對象
事件處理程序中的變量event保存著事件對象。而event.tatget屬性保存著發(fā)生事件的目標(biāo)元素。這個屬性是DOM API中規(guī)定的,但是沒有被所有瀏覽器實現(xiàn)。jQuery對這個事件對象進行了必要的擴展,從而在任何瀏覽器中都能夠使用這個屬性。通過.target,可以確定DOM中首先接收到事件的元素。而且,我們知道this引用的是處理事件的DOM元素。
使用event.tatget屬性 明確事件對象阻止事件冒泡的代碼如下:
復(fù)制代碼 代碼如下:
$(document).ready(function() {
$('switcher').click(function(event){
if(event.target == this)
{
$('switcher .button').toggleClass('hidden');
}
};)
});
4.常用的事件綁定
jQuery通過使用.bind()方法為元素進行事件綁定,通過使用.unbind()方法為元素進行解除綁定。而且.bind()方法是可以執(zhí)行多次綁定的,如果沒有綁定,在進行解除綁定的時候,這都是安全的。
很多時候某一個事件只需要觸發(fā)一次,隨后就要立即解除綁定,按照傳統(tǒng)的做法,我們可能會先進行事件綁定,然后在事件執(zhí)行完畢后進行解除綁定。jQuery為我們提供了一種簡寫的方法.one來專門解決上述情景下的繁瑣的代碼編寫,示例如下:
復(fù)制代碼 代碼如下:
$(document).ready(function(){
$('#swotcjer').one('click',toggleStyleSwitcher);
});
5.復(fù)合事件
在進行事件捕獲的時候,常常需要捕獲組合的用戶操作,并且以多個函數(shù)作為響應(yīng),這些事件我們稱為復(fù)合事件。
jQuery提供的.read()方法就是最常用的符合事件方法之一,除此之外,還有進行交互處理的時候用到的兩個函數(shù):
.hover(over,out) 一個模仿懸停事件(鼠標(biāo)移動到一個對象上面及移出這個對象)的方法。這是一個自定義的方法,它為頻繁使用的任務(wù)提供了一種“保持在其中”的狀態(tài)。
.toggle(fn,fn) 每次點擊時切換要調(diào)用的函數(shù)。
相關(guān)文章
jQuery實現(xiàn)點擊任意位置彈出層外關(guān)閉彈出層效果
在之前做項目的時候經(jīng)常會在主頁面上點擊某個按鈕,右側(cè)彈出一個div輸出對應(yīng)內(nèi)容的詳細信息,怎么實現(xiàn)的呢,今天小編給大家分享通過jquery實現(xiàn)點擊任意位置彈出層外關(guān)閉彈出層效果,感興趣的朋友一起看看吧2016-10-10jquery序列化form表單使用ajax提交后處理返回的json數(shù)據(jù)
這篇文章主要介紹了jquery序列化form表單,使用ajax提交后處理返回的json數(shù)據(jù)的示例,需要的朋友可以參考下2014-03-03jQuery HTML設(shè)置內(nèi)容和屬性操作實例分析
這篇文章主要介紹了jQuery HTML設(shè)置內(nèi)容和屬性操作,結(jié)合實例形式分析了jQuery HTML設(shè)置內(nèi)容和屬性相關(guān)函數(shù)與操作注意事項,需要的朋友可以參考下2020-05-05jQuery實現(xiàn)的感應(yīng)鼠標(biāo)懸停圖片色彩漸顯效果
這篇文章主要介紹了jQuery實現(xiàn)的感應(yīng)鼠標(biāo)懸停圖片色彩漸顯效果,涉及jQuery中hover、find、css等方法的使用技巧,需要的朋友可以參考下2015-03-03jQuery學(xué)習(xí)筆記之 Ajax操作篇(三) - 過程處理
對于 jQuery 通過 Ajax 方式傳遞數(shù)據(jù)時,我們還可以在過程中進行一定的處理,以便達到我們的需求。2014-06-06使用js dom和jquery分別實現(xiàn)簡單增刪改
今天學(xué)了jquery框架的簡單使用。于是用它實現(xiàn)簡單的增刪改,接著也用原始的javascript實現(xiàn)同樣的功能,兩者對比可以看出jquery的強大2014-09-09