jQuery 相關(guān)控件的事件操作分解
更新時(shí)間:2009年08月03日 11:45:12 作者:
JQuery是非常棒的JS類庫,有豐富的UI庫和插件,不過我鐘愛他的是他的選擇器,感覺其他功能有時(shí)跟后臺(tái)人員距離很遠(yuǎn),所以一般我也只使用一下他的選擇器。
今天突然對(duì)他的事件產(chǎn)生了興趣,先前也碰到過,也沒整理,今天有空就弄一下咯。
對(duì)于控件的事件,jQuery已經(jīng)提供了豐富的方法,包括綁定、一次綁定、觸發(fā)等,阿拉今早看看叫一哪能用額伐,大蝦路古就可以了。
jQuery的綁定事件非常方便,有bind、live、one還有它幫你把一些常用的事件給單獨(dú)了出來,比如控件的onclick事件,我們綁定onclick事件的時(shí)候只需要
$("#testButton").click(function() {
alert("I'm Test Button");
});
就這樣我們?cè)趖estButton這個(gè)按鈕上綁定了onclick事件,執(zhí)行alert語句。我們也可以使用$("#testButton").click();來觸發(fā)這個(gè)onclick事件,一切都非常ok啦。以上有點(diǎn)sb了,接下來看看取消事件。jQuery有unbind的方法,專門來取消綁定的,也就是取消事件,按照上面的例子的話,應(yīng)該使用:$("#testButton").unbind("click");恩,看上去非常好,如果你的click有2個(gè)事件的話,你還可以使用unbind("click", fnName)來刪除特定函數(shù)的綁定。為什么有這個(gè)取消特定函數(shù)的方法呢,我們來看下例子,我們會(huì)發(fā)現(xiàn),javascript的事件,跟C#的事件如出一轍,事件的綁定是疊加(+=) 而不是覆蓋。
var Eat = function() {
alert("我要吃飯");
}
var PayMoney = function() {
alert("先付錢");
}
jQuery(document).ready(function() {
$("#testButton").click(Eat);
$("#testButton").bind("click", PayMoney);
});
通過上面的例子,我們發(fā)現(xiàn)會(huì)先彈出:“我要吃飯”緊接著會(huì)彈出“先付錢”,說明它的綁定是通過onclick+=fn進(jìn)行的。我們修改下ready的方法:
jQuery(document).ready(function() {
$("#testButton").click(Eat);
$("#testButton").unbind();
$("#testButton").bind("click", PayMoney);
});
又出錯(cuò)了,呵呵,這次點(diǎn)擊按鈕的話,只會(huì)執(zhí)行PayMoney,不會(huì)執(zhí)行Eat,那如果把unbind()放在bind后面的話,這樣這個(gè)按鈕就不會(huì)起作用了。但如果我要去掉綁定的PayMoney方法呢?這時(shí)候我們應(yīng)該這樣寫:
jQuery(document).ready(function() {
$("#testButton").click(Eat);
$("#testButton").bind("click", PayMoney);
$("#testButton").unbind("click", PayMoney);
});
嘿嘿,跟bind其實(shí)一個(gè)樣,不過接下來你將看到一個(gè)bug(我不知道算不算),讓我們近距離體驗(yàn)一下
<input id="testButton" type="button" value="Test Button" onclick="Eat();" />
<script type="text/javascript">
jQuery(document).ready(function() {
$("#testButton").unbind("click", Eat);
$("#testButton").unbind();
$("#testButton").bind("click", PayMoney);
});
</script>
大家猜猜,會(huì)顯示什么?吃飯?付錢?答案是Eat -> PayMoney,?。。?!我這里取消了綁定,又刪除了特定的綁定,為什么還會(huì)執(zhí)行Eat呢?其中的原由要看jQuery的類庫了,我估計(jì)它只刪除了通過JQuery綁定的那些事件了,呵呵。那這時(shí)候我們?cè)撊绾文??好在jQuery有很多方法,其中一個(gè)就是attr,他是對(duì)Dom元素的屬性進(jìn)行操作,我們利用attr來消除input上的click事件。 $("#testButton").attr("onclick", "");這樣就可以把onclick事件清除了,記住,attr上因?yàn)槭窃氐膶傩?,所以這里要寫 “onclick” 而不是click,因?yàn)閏lick是jQuery封裝好的簡(jiǎn)寫方式。好了,綁定就到這里了,弄個(gè)場(chǎng)景,大家也好記得住點(diǎn):一日,老應(yīng)、老趙、老陳出去吃飯,吃飽了,喝足了,準(zhǔn)備付錢了,這時(shí)候
:<head>
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script type="text/javascript">
var PayMoney = function(name) {
alert(name + ":今天我請(qǐng)客,我來付錢");
}
jQuery(document).ready(function() {
$("#JeffreyPay").attr("onclick", "");
$("#JamesPay").attr("onclick", "");
$("#JeffreyPay").click(function() {
alert("。。。。這里不能刷卡");
});
$("#JeffreyPay").click(function() {
PayMoney("陳大");
});
$("#JamesPay").bind("click", function() {
alert("。。。。忘記帶錢包了");
});
$("#JamesPay").bind("click", $("#DlyingPay").attr("onclick"));
});
</script>
</head>
<body>
<input id="JeffreyPay" onclick="PayMoney('趙帥');" type="button" value="老趙付錢" />
<input id="JamesPay" type="button" onclick="PayMoney('老應(yīng)');" value="老應(yīng)付錢" />
<input id="DlyingPay" type="button" onclick="PayMoney('陳大');" value="老陳付錢" />
</body>
以上內(nèi)容均為原創(chuàng),不要用在邪惡的地方哦。其實(shí)在綁定事件上還存在很多bug,大家可以稍微修改下上面的效果就會(huì)知道了,比如自動(dòng)執(zhí)行,綁定失敗等,呵呵。
對(duì)于控件的事件,jQuery已經(jīng)提供了豐富的方法,包括綁定、一次綁定、觸發(fā)等,阿拉今早看看叫一哪能用額伐,大蝦路古就可以了。
jQuery的綁定事件非常方便,有bind、live、one還有它幫你把一些常用的事件給單獨(dú)了出來,比如控件的onclick事件,我們綁定onclick事件的時(shí)候只需要
復(fù)制代碼 代碼如下:
$("#testButton").click(function() {
alert("I'm Test Button");
});
就這樣我們?cè)趖estButton這個(gè)按鈕上綁定了onclick事件,執(zhí)行alert語句。我們也可以使用$("#testButton").click();來觸發(fā)這個(gè)onclick事件,一切都非常ok啦。以上有點(diǎn)sb了,接下來看看取消事件。jQuery有unbind的方法,專門來取消綁定的,也就是取消事件,按照上面的例子的話,應(yīng)該使用:$("#testButton").unbind("click");恩,看上去非常好,如果你的click有2個(gè)事件的話,你還可以使用unbind("click", fnName)來刪除特定函數(shù)的綁定。為什么有這個(gè)取消特定函數(shù)的方法呢,我們來看下例子,我們會(huì)發(fā)現(xiàn),javascript的事件,跟C#的事件如出一轍,事件的綁定是疊加(+=) 而不是覆蓋。
復(fù)制代碼 代碼如下:
var Eat = function() {
alert("我要吃飯");
}
var PayMoney = function() {
alert("先付錢");
}
jQuery(document).ready(function() {
$("#testButton").click(Eat);
$("#testButton").bind("click", PayMoney);
});
通過上面的例子,我們發(fā)現(xiàn)會(huì)先彈出:“我要吃飯”緊接著會(huì)彈出“先付錢”,說明它的綁定是通過onclick+=fn進(jìn)行的。我們修改下ready的方法:
復(fù)制代碼 代碼如下:
jQuery(document).ready(function() {
$("#testButton").click(Eat);
$("#testButton").unbind();
$("#testButton").bind("click", PayMoney);
});
又出錯(cuò)了,呵呵,這次點(diǎn)擊按鈕的話,只會(huì)執(zhí)行PayMoney,不會(huì)執(zhí)行Eat,那如果把unbind()放在bind后面的話,這樣這個(gè)按鈕就不會(huì)起作用了。但如果我要去掉綁定的PayMoney方法呢?這時(shí)候我們應(yīng)該這樣寫:
復(fù)制代碼 代碼如下:
jQuery(document).ready(function() {
$("#testButton").click(Eat);
$("#testButton").bind("click", PayMoney);
$("#testButton").unbind("click", PayMoney);
});
嘿嘿,跟bind其實(shí)一個(gè)樣,不過接下來你將看到一個(gè)bug(我不知道算不算),讓我們近距離體驗(yàn)一下
復(fù)制代碼 代碼如下:
<input id="testButton" type="button" value="Test Button" onclick="Eat();" />
<script type="text/javascript">
jQuery(document).ready(function() {
$("#testButton").unbind("click", Eat);
$("#testButton").unbind();
$("#testButton").bind("click", PayMoney);
});
</script>
大家猜猜,會(huì)顯示什么?吃飯?付錢?答案是Eat -> PayMoney,?。。?!我這里取消了綁定,又刪除了特定的綁定,為什么還會(huì)執(zhí)行Eat呢?其中的原由要看jQuery的類庫了,我估計(jì)它只刪除了通過JQuery綁定的那些事件了,呵呵。那這時(shí)候我們?cè)撊绾文??好在jQuery有很多方法,其中一個(gè)就是attr,他是對(duì)Dom元素的屬性進(jìn)行操作,我們利用attr來消除input上的click事件。 $("#testButton").attr("onclick", "");這樣就可以把onclick事件清除了,記住,attr上因?yàn)槭窃氐膶傩?,所以這里要寫 “onclick” 而不是click,因?yàn)閏lick是jQuery封裝好的簡(jiǎn)寫方式。好了,綁定就到這里了,弄個(gè)場(chǎng)景,大家也好記得住點(diǎn):一日,老應(yīng)、老趙、老陳出去吃飯,吃飽了,喝足了,準(zhǔn)備付錢了,這時(shí)候
復(fù)制代碼 代碼如下:
:<head>
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script type="text/javascript">
var PayMoney = function(name) {
alert(name + ":今天我請(qǐng)客,我來付錢");
}
jQuery(document).ready(function() {
$("#JeffreyPay").attr("onclick", "");
$("#JamesPay").attr("onclick", "");
$("#JeffreyPay").click(function() {
alert("。。。。這里不能刷卡");
});
$("#JeffreyPay").click(function() {
PayMoney("陳大");
});
$("#JamesPay").bind("click", function() {
alert("。。。。忘記帶錢包了");
});
$("#JamesPay").bind("click", $("#DlyingPay").attr("onclick"));
});
</script>
</head>
<body>
<input id="JeffreyPay" onclick="PayMoney('趙帥');" type="button" value="老趙付錢" />
<input id="JamesPay" type="button" onclick="PayMoney('老應(yīng)');" value="老應(yīng)付錢" />
<input id="DlyingPay" type="button" onclick="PayMoney('陳大');" value="老陳付錢" />
</body>
以上內(nèi)容均為原創(chuàng),不要用在邪惡的地方哦。其實(shí)在綁定事件上還存在很多bug,大家可以稍微修改下上面的效果就會(huì)知道了,比如自動(dòng)執(zhí)行,綁定失敗等,呵呵。
您可能感興趣的文章:
- jquery快捷動(dòng)態(tài)綁定鍵盤事件的操作函數(shù)代碼
- jQuery 選擇器、DOM操作、事件、動(dòng)畫
- jquery中dom操作和事件的實(shí)例學(xué)習(xí) 下拉框應(yīng)用
- jquery中dom操作和事件的實(shí)例學(xué)習(xí)-表單驗(yàn)證
- jQuery動(dòng)態(tài)生成的元素綁定事件操作實(shí)例分析
- jQuery級(jí)聯(lián)操作綁定事件實(shí)例
- jquery中dom操作和事件的實(shí)例學(xué)習(xí) 仿yahoo郵箱登錄框的提示效果
- Jquery基礎(chǔ)之事件操作詳解
- 淺談事件冒泡、事件委托、jQuery元素節(jié)點(diǎn)操作、滾輪事件與函數(shù)節(jié)流
- 詳解Jquery的事件操作和文檔操作
- jQuery隨手筆記之常用的jQuery操作DOM事件
- jQuery操作事件完整實(shí)例分析
相關(guān)文章
jQuery取得設(shè)置清空select選擇的文本與值
這篇文章主要介紹了jQuery如何取得設(shè)置清空select選擇的文本與值,下面有個(gè)不錯(cuò)的示例,需要的朋友可以參考下2014-07-07
jQuery事件之鍵盤事件(ctrl+Enter回車鍵提交表單等)
鍵盤事件處理所有用戶在鍵盤敲擊的情況,不管在文本輸入?yún)^(qū)域內(nèi)部還是外部,這里介紹下jquery鍵盤事件的相關(guān)知識(shí),需要的朋友可以參考下2014-05-05
讓人印象深刻的10個(gè)jQuery手風(fēng)琴效果應(yīng)用
jQuery 是最流行的 JavaScript 開發(fā)框架,它簡(jiǎn)化了 HTML 文檔遍歷,事件處理,動(dòng)畫以及 Ajax 交互,幫助 Web 開發(fā)人員更快速的實(shí)現(xiàn)各種精美的界面效果2012-05-05
Jquery find與filter函數(shù)區(qū)別 說明
基本是find子元素找,filter是平級(jí)找2010-05-05
編寫自己的jQuery插件簡(jiǎn)單實(shí)現(xiàn)代碼
用了這長(zhǎng)時(shí)間的jQuery,一直也沒怎么寫過jQuery插件,今天簡(jiǎn)單實(shí)現(xiàn)倆個(gè)插件,鞏固下基礎(chǔ)知識(shí)。2011-04-04
多個(gè)datatable共存造成多個(gè)表格的checkbox都被選中
所以當(dāng)有多個(gè)datatable 引用到一個(gè)頁面中的時(shí)候,全選事件會(huì)匹配全部的datatable,所以造成全部多個(gè)表格的checkbox被都被選中2013-07-07
jQuery動(dòng)態(tài)移除和添加背景圖片的方法詳解
這篇文章主要介紹了jQuery動(dòng)態(tài)移除和添加背景圖片的方法,結(jié)合實(shí)例形式分析了jQuery針對(duì)頁面元素樣式及事件響應(yīng)的動(dòng)態(tài)操作技巧,需要的朋友可以參考下2017-03-03

