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