JQuery最佳實(shí)踐之精妙的自定義事件
更新時(shí)間:2010年08月11日 21:59:46 作者:
關(guān)于JQuery自定義事件,不少同學(xué)曾發(fā)郵件問(wèn)我究竟日常JS應(yīng)用中會(huì)不會(huì)用到,以及具體例子云云。。。
恰好偶最近負(fù)責(zé)的一個(gè)可視化編輯器的開(kāi)發(fā),其中有些地方便應(yīng)用了JQuery的自定義事件,而且達(dá)到了很好的效果-精簡(jiǎn)代碼的同時(shí)充分利用了OO的原則。
本文以我實(shí)際應(yīng)用開(kāi)發(fā)過(guò)程中遇到的一個(gè)例子進(jìn)一步說(shuō)明“什么時(shí)候用JQuery的自定義事件以及怎么用”,希望可以拋磚引玉,同時(shí)權(quán)且當(dāng)是回復(fù)同學(xué)們的郵件了。
Demo-Ingenious JQuery custom event
JQuery最佳實(shí)踐-精妙的自定義事件
問(wèn)題:一個(gè)復(fù)選框X,你如何便捷地觸發(fā)它的click事件的處理邏輯,但是又不改變它當(dāng)前的選中狀態(tài)?
答案:用自定義事件處理函數(shù)封裝復(fù)選框click事件的處理邏輯!然后觸發(fā)該自定義事件。
以下應(yīng)用場(chǎng)景你曾經(jīng)遇到過(guò)么?
需求:某個(gè)容器A,用戶可以設(shè)置它的4條邊框的有無(wú)以及邊框色?“邊框的有無(wú)”和“顏色的變化”需要聯(lián)動(dòng),
就是說(shuō)改變邊框的時(shí)候獲取當(dāng)前設(shè)定的顏色,改變顏色的時(shí)候獲取當(dāng)前設(shè)定的邊框,并及時(shí)反映到容器A上。
注:本例子邊框顏色統(tǒng)一設(shè)置,分別設(shè)置的例子大家可以去寫下~
核心代碼:
<div id="demo">
<div class="acts">
<label for="txtCpk"></label>邊框設(shè)置:<input type="text" size="10" id="txtCpk" name="color"/>
<input type="checkbox" name="bd" value="top"/><span>上</span>
<input type="checkbox" name="bd" value="right"/><span>右</span>
<input type="checkbox" name="bd" value="bottom"/><span>下</span>
<input type="checkbox" name="bd" value="left"/><span>左</span>
</div>
<textarea id="A" cols="100" rows="29"></textarea>
</div>
</body>
<script id="js" type="text/javascript">
//<![CDATA[
//目標(biāo)容器A
var $a=$("#A");
//拾色器
var $txtColor=$("#txtCpk").ColorPicker({
onChange:function(hsb,hex,rgb){
$txtColor.val("#"+hex).css("backgroundColor","#"+hex);
//聯(lián)動(dòng)邊框-觸發(fā)自定義事件"evtClick",避免改變復(fù)選框的狀態(tài)
//這里可不能直接用$bd.trigger("click")噢;
//$bd.trigger("click");
$bd.trigger("evtClick");
}
});
//邊框及自定義事件的應(yīng)用
var $bd=$("#demo input[type='checkbox']").bind("evtClick",function(evt){
var c=this.checked?"2px solid "+$txtColor.val():"none";
$a.css("border-"+this.value,c);
}).click(function(evt){
$(this).trigger("evtClick");
});
//show the js
$(document).ready(function(){
$a.val($("#js").html());
});
//]]>
</script>
在線演示
本文以我實(shí)際應(yīng)用開(kāi)發(fā)過(guò)程中遇到的一個(gè)例子進(jìn)一步說(shuō)明“什么時(shí)候用JQuery的自定義事件以及怎么用”,希望可以拋磚引玉,同時(shí)權(quán)且當(dāng)是回復(fù)同學(xué)們的郵件了。
Demo-Ingenious JQuery custom event
JQuery最佳實(shí)踐-精妙的自定義事件
問(wèn)題:一個(gè)復(fù)選框X,你如何便捷地觸發(fā)它的click事件的處理邏輯,但是又不改變它當(dāng)前的選中狀態(tài)?
答案:用自定義事件處理函數(shù)封裝復(fù)選框click事件的處理邏輯!然后觸發(fā)該自定義事件。
以下應(yīng)用場(chǎng)景你曾經(jīng)遇到過(guò)么?
需求:某個(gè)容器A,用戶可以設(shè)置它的4條邊框的有無(wú)以及邊框色?“邊框的有無(wú)”和“顏色的變化”需要聯(lián)動(dòng),
就是說(shuō)改變邊框的時(shí)候獲取當(dāng)前設(shè)定的顏色,改變顏色的時(shí)候獲取當(dāng)前設(shè)定的邊框,并及時(shí)反映到容器A上。
注:本例子邊框顏色統(tǒng)一設(shè)置,分別設(shè)置的例子大家可以去寫下~
核心代碼:
復(fù)制代碼 代碼如下:
<div id="demo">
<div class="acts">
<label for="txtCpk"></label>邊框設(shè)置:<input type="text" size="10" id="txtCpk" name="color"/>
<input type="checkbox" name="bd" value="top"/><span>上</span>
<input type="checkbox" name="bd" value="right"/><span>右</span>
<input type="checkbox" name="bd" value="bottom"/><span>下</span>
<input type="checkbox" name="bd" value="left"/><span>左</span>
</div>
<textarea id="A" cols="100" rows="29"></textarea>
</div>
</body>
<script id="js" type="text/javascript">
//<![CDATA[
//目標(biāo)容器A
var $a=$("#A");
//拾色器
var $txtColor=$("#txtCpk").ColorPicker({
onChange:function(hsb,hex,rgb){
$txtColor.val("#"+hex).css("backgroundColor","#"+hex);
//聯(lián)動(dòng)邊框-觸發(fā)自定義事件"evtClick",避免改變復(fù)選框的狀態(tài)
//這里可不能直接用$bd.trigger("click")噢;
//$bd.trigger("click");
$bd.trigger("evtClick");
}
});
//邊框及自定義事件的應(yīng)用
var $bd=$("#demo input[type='checkbox']").bind("evtClick",function(evt){
var c=this.checked?"2px solid "+$txtColor.val():"none";
$a.css("border-"+this.value,c);
}).click(function(evt){
$(this).trigger("evtClick");
});
//show the js
$(document).ready(function(){
$a.val($("#js").html());
});
//]]>
</script>
在線演示
相關(guān)文章
jQuery中bind與live的用法及區(qū)別小結(jié)
本篇文章主要是對(duì)jQuery中bind與live的用法以及區(qū)別進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01
11個(gè)用于提高排版水平的基于jquery的文字效果插件
我們都知道,在傳統(tǒng)的排版當(dāng)中使用DIV+CSS來(lái)實(shí)現(xiàn)的話是很困難的,今天使用jquery插件,你可以實(shí)現(xiàn)卓越的排版效果,專門用于為您提高您的排版水平2012-09-09
jQuery操作iframe中js函數(shù)的方法小結(jié)
這篇文章主要介紹了jQuery操作iframe中js函數(shù)的方法,結(jié)合實(shí)例形式總結(jié)分析了jQuery操作iframe中的元素、函數(shù)常用方法與注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
jquery實(shí)現(xiàn)相冊(cè)一下滑動(dòng)兩次的方法
這篇文章主要介紹了jquery實(shí)現(xiàn)相冊(cè)一下滑動(dòng)兩次的方法,是非常實(shí)用的圖片特效技巧,需要的朋友可以參考下2015-02-02
jQuery實(shí)現(xiàn)的網(wǎng)站banner圖片無(wú)縫輪播效果完整實(shí)例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的網(wǎng)站banner圖片無(wú)縫輪播效果,結(jié)合完整實(shí)例形式分析了jQuery結(jié)合時(shí)間函數(shù)實(shí)現(xiàn)圖片定時(shí)輪播切換相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
網(wǎng)頁(yè)中返回頂部代碼(多種方法)另附注釋說(shuō)明
下面就說(shuō)下簡(jiǎn)單的返回頂部效果的代碼實(shí)現(xiàn),附注釋說(shuō)明,最簡(jiǎn)單的靜態(tài)返回頂部,點(diǎn)擊直接跳轉(zhuǎn)頁(yè)面頂部及用js模擬滾動(dòng)效果上滑至頂部2013-04-04
Easyui 關(guān)閉jquery-easui tab標(biāo)簽頁(yè)前觸發(fā)事件的解決方法
這篇文章主要介紹了Easyui 關(guān)閉jquery-easui tab標(biāo)簽頁(yè)前觸發(fā)事件 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
jquery用offset()方法獲得元素的xy坐標(biāo)
jquery 獲得元素的 xy坐標(biāo),用offset()方法,body屬性設(shè)置margin :0;padding:0;,需要的朋友可以參考下2014-09-09

