1. 事件
1.1 加載DOM
在頁(yè)面加載完畢后,瀏覽器會(huì)通過(guò)JavaScript為DOM元素添加事件。在JavaScript代碼中,通常使用window.onload方法,而在jQuery中,使用的是$(document).ready()方法。$(document).ready()方法和window.onload方法有相似的功能,但是在執(zhí)行時(shí)機(jī)方面是有區(qū)別的。window.onload方法是在網(wǎng)頁(yè)中所有的元素完全加載到瀏覽器后才執(zhí)行,而$(document).ready()方法注冊(cè)的事件處理程序,在DOM完成就緒時(shí)就可以被調(diào)用。
由于在$(document).ready()方法內(nèi)注冊(cè)的事件,只要DOM就緒就會(huì)被執(zhí)行,因此可能此時(shí)元素的關(guān)聯(lián)文件未下載完。要解決這個(gè)問(wèn)題,可以使用jQuery中另一個(gè)關(guān)于頁(yè)面加載的方法load()方法。load()方法會(huì)在元素的onload事件中綁定一個(gè)處理函數(shù)。如果處理函數(shù)綁定給window對(duì)象,則會(huì)在所有內(nèi)容加載完畢后觸發(fā),例如:
$(window).load(function(){});每次調(diào)用$(document).ready()方法都會(huì)在現(xiàn)有的行為上追加新的行為,這些行為函數(shù)會(huì)根據(jù)注冊(cè)的順序依次執(zhí)行。它也可以簡(jiǎn)寫(xiě)為:
$(function(){});另外,$(document)也可以簡(jiǎn)寫(xiě)為$(),例如:
$().ready(function(){}); 1.2 事件綁定
在文檔裝載完成后,如果要為元素綁定事件來(lái)完成某些操作,可以使用bind()方法來(lái)對(duì)匹配元素進(jìn)行特定事件的綁定,例如:
bind(type[,data],fn);
第一個(gè)參數(shù)是事件類型,包括:blur、focus、load、resize、scroll、unload、click、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、select、submit、keydown、keypress、keyup和error等。
第二個(gè)參數(shù)是可選參數(shù),作為event.data屬性值傳遞給事件對(duì)象的額外數(shù)據(jù)對(duì)象。
第三個(gè)參數(shù)則是用來(lái)綁定的處理函數(shù)。
例如:
$("#mydiv").bind("click",function(){ $(this).next("div.content").show();});與ready()方法一樣,bind()方法也可以多次調(diào)用。像click、mouseover和mouseout這類事件,在程序中經(jīng)常用到,jQuery為此也提供了一套簡(jiǎn)寫(xiě)方法,例如:
$("#mydiv").mouseover(function(){ $(this).next("div.content").show();});1.3 合成事件
jQuery有兩個(gè)合成事件:hover()方法和toggle()方法。hover()方法的語(yǔ)法結(jié)構(gòu)為:
hover(enter,leave);
hover()方法用于模擬光標(biāo)懸停事件。當(dāng)光標(biāo)移動(dòng)到元素上時(shí),會(huì)觸發(fā)指定的第一個(gè)函數(shù),當(dāng)光標(biāo)移出這個(gè)元素時(shí),會(huì)觸發(fā)指定的第二個(gè)函數(shù)。
toggle(fn1,fn2,...fnN);
toggle()方法用于模擬鼠標(biāo)連續(xù)單擊事件,第一次單擊元素,觸發(fā)指定的第一個(gè)函數(shù),當(dāng)再次單擊同一個(gè)元素時(shí),則觸發(fā)指定的第2個(gè)函數(shù),以此類推,直到最后一個(gè)。
新聞熱點(diǎn)
疑難解答
圖片精選