關(guān)于jquery動(dòng)態(tài)增減控件的一些想法和小插件
后來(lái)去年末時(shí)間空閑下來(lái)的時(shí)候重寫了這段代碼,現(xiàn)在這段代碼壓縮到100行內(nèi),而且擴(kuò)展方便,可以非常輕松的增減控件的數(shù)量,使用非常簡(jiǎn)單。
效果圖:

一個(gè)簡(jiǎn)單的例子:
<?xml version="1.0" encoding="iso-8859-1"?>
<html>
<head>
<title></title>
<script language="javascript" src="jquery-1.4.2.min.js"></script>
<script language="javascript" src="dynamicAddRemover.js"></script>
<script language="javascript">
$(function(){
$("table").dynamicAddRemover();
});
</script>
</head>
<body>
<table>
<tr>
<td>
<select>
<option value ="volvo">Volvo</option>
<option value ="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<input type="text" name="text1" id="text1" value="Text"></input>
<button type="button" name="btn1" value="btn1" id="btn1" >Button</button>
</td>
</tr>
</table>
</body>
</html>
加了限制個(gè)數(shù)事件后的例子:
<?xml version="1.0" encoding="iso-8859-1"?>
<html>
<head>
<title></title>
<script language="javascript" src="jquery-1.4.2.min.js"></script>
<script language="javascript" src="dynamicAddRemover.js"></script>
<script language="javascript">
$(function(){
$("#table1").dynamicAddRemover({
addedEvent:function(newCtl, options){
//clear the textbox.
newCtl.find(":text").val('');
if($("table").size() > 5)
{
//hide the add button.
newCtl.find("img[id$='" + options.adderId + "']").hide();
}
},
removedEvent:function(prevCtl, nextCtl, options){
if($("table").size() <= 5)
{
//show the add button.
$("table:last").find("img[id$='" + options.adderId + "']").show();
}
}
});
});
</script>
</head>
<body>
<table id='table1'>
<tr>
<td>
<select>
<option value ="volvo">Volvo</option>
<option value ="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<input type="text" name="text1" id="text1" value="Text"></input>
<button type="button" name="btn1" value="btn1" id="btn1" >Button</button>
</td>
</tr>
</table>
</body>
</html>
參數(shù)的定義:
rootWrapper default: "table"
根容器,就是需要增減的控件的根容器,目前代碼上僅僅支持table根容器。
adderId default:"imgExpBtn"
增加按鈕的Id。
removerId default:"imgColBtn"
刪除按鈕的Id。
addingEvent default:null
在增加事件之前所觸發(fā)的自定義事件,參數(shù)為newWrapper和options, newWrapper為新增的控件的父容器,options為參數(shù)列表自己。
addedEvent default:null
在增加事件之后所觸發(fā)的自定義事件,參數(shù)為newWrapper和options, newWrapper為新增的控件的父容器,options為參數(shù)列表自己。
removingEvent default:null
在刪除事件之前所觸發(fā)的自定義事件,參數(shù)為refWrapper和options, reWrapper為被刪除的控件的父容器,options為參數(shù)列表自己。
removedEvent default:null
在刪除事件之后所觸發(fā)的自定義事件,參數(shù)為prevWrapper,nextWrapper和options, prevWrapper為被刪除的父容器的上一個(gè)容器,nextWrapper為被刪除的父容器的下一個(gè)容器,,options為參數(shù)列表自己。
collapseImgUrl default:'icon_collapse.gif'
增加按鈕的路徑
expandImgUrl default:'icon_expand.gif'
刪除按鈕的路徑
注意事項(xiàng):
.可以添加在增減過(guò)程中需要的自定義參數(shù)和變量,如: $("table").dynamicAddRemover({param1:"param1", param2:"param2"});
使用時(shí),如:options.param1等等。
.根容器必須有唯一Id且指定時(shí)必須唯一。如果有多個(gè)模塊(多個(gè)根容器)需要使用可以這樣:$("#table1").dynamicAddRemover(),$("#table2").dynamicAddRemover()等等。
.新添加的控件里的Id和name并沒有更新,如果有特別業(yè)務(wù)需要,請(qǐng)?jiān)赼ddedEvent里添加生成新Id的業(yè)務(wù)邏輯。
.本插件需要Jquery 1.2.6版本以上支持。
源代碼和原理很簡(jiǎn)單,僅僅作為一個(gè)拋磚引玉的作用。以下是包括源代碼的附件。
dynamicAddRemover.rar
相關(guān)文章
Iframe實(shí)現(xiàn)跨瀏覽器自適應(yīng)高度解決方法
這篇文章主要介紹了Iframe實(shí)現(xiàn)跨瀏覽器自適應(yīng)高度解決方法,通過(guò)父層容器的應(yīng)用來(lái)實(shí)現(xiàn)這一功能,非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-09-09jQuery 追加元素的方法如append、prepend、before
jQuery - 追加元素的方法有很多如append、prepend、before等等,下面為大家詳細(xì)介紹下2014-01-01jQuery獲得IE版本不準(zhǔn)確webbrowser的解決方法
用$.browser.version經(jīng)常出現(xiàn)一些不準(zhǔn)確的狀況,最近碰到,做了一些總結(jié),不知道是否全面2014-02-02jquery uploadify隱藏上傳進(jìn)度的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇jquery uploadify隱藏上傳進(jìn)度的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02jquery select動(dòng)態(tài)加載選擇(兼容各種瀏覽器)
jquery select動(dòng)態(tài)加載選擇,兼容各種瀏覽器包括ie6,在ie6下會(huì)報(bào)錯(cuò),不過(guò)我們已有解決方法,感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)jquery有所幫助2013-02-02jquery列表拖動(dòng)排列(由項(xiàng)目提取相當(dāng)好用)
最好的jquery列表拖動(dòng)排列自定義拖動(dòng)層排列。當(dāng)點(diǎn)擊或拖動(dòng)列表時(shí),可以自定義隨意拖放列表模塊到相應(yīng)位置2014-06-06jQuery實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)時(shí)高亮,同時(shí)其他同級(jí)元素變暗的效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)時(shí)高亮,同時(shí)其他同級(jí)元素變暗的效果,涉及jQuery基于事件響應(yīng)機(jī)制的頁(yè)面元素遍歷與屬性變換操作技巧,需要的朋友可以參考下2016-09-09EasyUi 打開對(duì)話框后控件賦值及賦值后不顯示的問題解決辦法
這篇文章主要介紹了easyUi 打開對(duì)話框后控件賦值,以及賦值后不顯示的問題解決辦法,解決方法非常簡(jiǎn)單,只需要將賦值語(yǔ)句修改下就好,下面小編給大家簡(jiǎn)單介紹下,需要的朋友參考下2017-01-01jQuery Validate表單驗(yàn)證插件的基本使用方法及功能拓展
這篇文章主要介紹了jQuery Validate表單驗(yàn)證插件的基本使用方法及功能拓展的相關(guān)資料,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2017-01-01