初窺JQuery(二) 事件機(jī)制(1)
JQuery的事件處理機(jī)制包括:頁(yè)面加載、事件綁定、事件委派、事件切換四種機(jī)制。我們先從$(document).ready()事件開(kāi)始。
一、頁(yè)面加載$(document).ready()相當(dāng)與Javascript中的onLoad()事件,都是在頁(yè)面加載的時(shí)候執(zhí)行該方法,但是兩者又有著微妙的差別,ready()事件是當(dāng)HTML下載完成并解析成DOM樹(shù)之后就可以執(zhí)行,而onLoad()事件要等HTML包括文件都下載完成之后才能執(zhí)行。我們?cè)趓eady()事件中可以綁定其他的一些事件或者函數(shù),ready()有幾種語(yǔ)法可以表示:
$(document).ready(function(){});
$().ready(function(){});
$(function(){});
當(dāng)然我個(gè)人還是習(xí)慣于用第一種,增強(qiáng)可讀性,需要注意的是在使用ready()事件的時(shí)候請(qǐng)確保在 <body> 元素的onload事件中沒(méi)有注冊(cè)函數(shù),否則不會(huì)觸發(fā)$(document).ready()事件。也可以在同一個(gè)頁(yè)面中無(wú)限次地使用$(document).ready()事件。其中注冊(cè)的函數(shù)會(huì)按照(代碼中的)先后順序依次執(zhí)行。
二、事件切換只有兩個(gè)方法,就是hover()和toggle()兩個(gè)方法,由于他們截取組合的用戶(hù)操作,并且以多個(gè)函數(shù)響應(yīng),因此也稱(chēng)為復(fù)合事件處理機(jī)制。hover()方法是一個(gè)模仿鼠標(biāo)懸停變化的方法,簡(jiǎn)單的說(shuō)就是鼠標(biāo)移入移出是時(shí)候執(zhí)行你指定的行為的方法,我們最常用的就是做菜單切換效果。toggle()方法就是當(dāng)你點(diǎn)擊按照順序執(zhí)行你指定的函數(shù)方法,第一次點(diǎn)擊執(zhí)行第一個(gè)函數(shù),第二次點(diǎn)擊執(zhí)行第二個(gè)函數(shù),以此類(lèi)推,它可以使用事件綁定中的unbind('click')方法刪除。
hover(over,out)實(shí)例:
<style type="text/css">
#Menu
{
background-color:Red;
width:150px;
height:30px;
text-align:center;
border:solid 1px black;
}
#Menu_child
{
width:150px;
border:solid 1px black;
display:none;
}
#Menu_child div
{
background-color:#f3f3f3;
width:150px;
height:30px;
text-align:center;
}
</style>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$("#Menu").hover(
function() {
$("#Menu_child").fadeIn();
},
function() {
$("#Menu_child").fadeOut();
});
});
</script>
</head>
<body>
<div id="Menu">JQuery事件處理</div>
<div id="Menu_child">
<div>頁(yè)面加載</div>
<div>事件綁定</div>
<div>事件委派</div>
<div>事件切換</div>
</div>
</body>
toggle(fn,fn)實(shí)例:
HTML代碼
<input type="button" value="toggle()方法" id="toggle" />
JQuery代碼
$("#toggle").toggle(
function() {
alert("第一次點(diǎn)擊");
},
function() {
alert("第二次點(diǎn)擊");
},
function() {
alert("第三次點(diǎn)擊");
},
function() {
alert("第四次點(diǎn)擊");
});
三、事件委派中也只有兩個(gè)方法,live()和die()兩個(gè)方法,這兩個(gè)方法是1.3版本之后才新增的,之前的版本是沒(méi)有的。live()可以理解成元素組事件委派方法,比如li元素用live綁定了click事件。那么當(dāng)在以后增加一個(gè)li到這個(gè)頁(yè)面時(shí),對(duì)于這個(gè)新增加的li,其click事件依然可用,而無(wú)需重新給這種新增加的元素綁定事件,在編寫(xiě)樹(shù)形插件的時(shí)候相當(dāng)有用。die()方法就很好解釋?zhuān)脕?lái)解除live()綁定的方法。
live(type,fn):live()中type參數(shù)目前只支持click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup事件。實(shí)例如下
HTML代碼:
<ul>
<li>頁(yè)面加載</li>
<li>事件綁定</li>
<li>事件委派</li>
<li>事件切換</li>
</ul>
JQuery代碼:
$("li").live('click', function() {
var index = $("li").index(this);//獲取li的索引
var text = $("li").eq(index).text();//根據(jù)單擊項(xiàng)索引獲得文本值
alert("索引:" + index + ",文本值:" + text);
});
die([type],[fn]):die()使用起來(lái)相當(dāng)簡(jiǎn)單,一種刪除所有l(wèi)ive()事件,一種指定刪除,兩個(gè)參數(shù)是可選的。
$("#die").click(function() {
$("li").die(); //刪除所有l(wèi)ive()事件
$("li").die("click");//刪除指定為click的live()事件
$("li").die('click', function() { alert("刪除live()事件成功") });//刪除指定為click的live()事件并執(zhí)行函數(shù)
});
僅供參考,歡迎感興趣的朋友參與討論。下篇文章再說(shuō)事件綁定,寫(xiě)一起太長(zhǎng)了。未完待續(xù)........
相關(guān)文章
淺談struts1 & jquery form 文件異步上傳
下面小編就為大家?guī)?lái)一篇淺談struts1 & jquery form 文件異步上傳。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05jQuery News Ticker 基于jQuery的即時(shí)新聞行情展示插件
今天分享一個(gè)新聞行情的jQUery插件,可以幫助大家使用比較小的頁(yè)面區(qū)域來(lái)展示最新最重要的信息。2011-11-11JQuery以JSON方式提交數(shù)據(jù)到服務(wù)端示例代碼
這篇文章主要介紹了JQuery如何以JSON方式提交數(shù)據(jù)到服務(wù)端,需要的朋友可以參考下2014-05-05jQuery prototype沖突的2種解決方法(附demo示例下載)
這篇文章主要介紹了jQuery prototype沖突的2種解決方法,分析了針對(duì)jQuery中添加代碼與沖突位置添加代碼2種情況,并附帶demo示例供讀者下載參考,需要的朋友可以參考下2016-01-01jquery實(shí)現(xiàn)圖片左右間隔滾動(dòng)特效(可自動(dòng)播放)
圖片左右間隔滾動(dòng)Jquery特效,點(diǎn)擊滾動(dòng),不點(diǎn)擊自動(dòng)滾動(dòng),具體處理程序如下,感興趣的朋友可以參考下哈,希望可以幫助到你2013-05-05jQuery基本選擇器(實(shí)例及表單域value的獲取方法)
下面小編就為大家?guī)?lái)一篇jQuery基本選擇器(實(shí)例及表單域value的獲取方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05