JQuery實(shí)現(xiàn)列表中復(fù)選框全選反選功能封裝(推薦)
我們?cè)谧隽斜淼臅r(shí)候經(jīng)常會(huì)遇到全選,反選進(jìn)行批量處理問(wèn)題,例如:

我當(dāng)時(shí)就是簡(jiǎn)單的實(shí)現(xiàn)了,然后想封裝到公共的js中,封裝的太爛,不好意思貼出來(lái)了(就是把實(shí)現(xiàn)代碼之間放到公共js中,然后每個(gè)頁(yè)面都用固定的id,class,現(xiàn)在想想我都不好意思叫他封裝了),然后想到之前老大有寫(xiě)過(guò)這個(gè)功能去看下他怎么寫(xiě)的,真是沒(méi)有對(duì)比就沒(méi)有傷害啊,這才叫封裝;
$(':checkbox[data-check-target]').click(function () {
var target = $(this).attr('data-check-target');
if ($(this).prop('checked')) {
$(target).prop('checked', true);
} else {
$(target).prop('checked', false);
}
});
首先這兒的高封裝性就體現(xiàn)出來(lái)了,只有一個(gè)自定義的data-check-target屬性用于js和html分離后的連接橋梁(而我當(dāng)時(shí)用兩個(gè):一個(gè)全選復(fù)選框,一個(gè)子復(fù)選框,有關(guān)的點(diǎn)都用上了,這樣就沒(méi)起到封裝的效果,js和html耦合性太大)(我看到上面的js就在想怎么通過(guò)一個(gè)連接點(diǎn)把三個(gè)相關(guān)聯(lián)的東西聯(lián)系起來(lái)的呢);
接下來(lái)我們繼續(xù)看具體使用的地方:

我發(fā)現(xiàn)全選復(fù)選框用于和js鏈接的橋梁的自定義屬性data-check-target有點(diǎn)特別:
<input type="checkbox" data-check-target=".id-checkbox" />
它的值為“.id-checkbox”,看起來(lái)就感覺(jué)好奇怪,繼續(xù)往下看子復(fù)選框?qū)崿F(xiàn):
<input type="checkbox" name="ids[]" value="@item.Id" class="id-checkbox" />
到這兒才豁然開(kāi)朗原來(lái)子復(fù)選框的class名稱(chēng)就存放在自定義屬性data-check-target中;
var target = $(this).attr('data-check-target');
然后再通過(guò)自定義屬性data-check-target拿到子復(fù)選框的class,從而達(dá)到高封裝性;
我總結(jié)的就是js和html通過(guò)了自定義屬性data-check-target通信,子復(fù)選框依賴(lài)全選復(fù)選框自定義屬性data-check-target的值;
這個(gè)例子看下來(lái)代碼不難,也沒(méi)有什么地方很難理解的,就是通過(guò)一個(gè)自定義屬性巧妙的完成了低耦合的封裝,這也是正是這段代碼的難點(diǎn)和精髓;
我真心抑制不住內(nèi)心的崇拜,這幾行代碼太漂亮了。
PS:上面js為什么用prop而不用attr,因?yàn)椋喝绻?dāng)前input中初始化未定義checked屬性,則該元素沒(méi)有指定的checked屬性,所以.attr()會(huì)返回undefined;
對(duì)于HTML元素本身就帶有的固有屬性,在處理時(shí),使用prop方法。
對(duì)于HTML元素我們自己自定義的DOM屬性,在處理時(shí),使用attr方法。
以上所述是小編給大家介紹的JQuery實(shí)現(xiàn)列表中復(fù)選框全選反選功能封裝(推薦),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- bootstrap+jQuery 實(shí)現(xiàn)下拉菜單中復(fù)選框全選和全不選效果
- jQuery對(duì)checkbox 復(fù)選框的全選全不選反選的操作
- js與jQuery實(shí)現(xiàn)checkbox復(fù)選框全選/全不選的方法
- jQuery實(shí)現(xiàn)復(fù)選框全選/取消全選/反選及獲得選擇的值
- jQuery判斷checkbox(復(fù)選框)是否被選中以及全選、反選實(shí)現(xiàn)代碼
- jquery復(fù)選框全選/取消示例
- JQUERY復(fù)選框CHECKBOX全選,取消全選
- JQuery復(fù)選框全選效果如何實(shí)現(xiàn)
相關(guān)文章
jQuery 核心函數(shù)以及jQuery對(duì)象
首先介紹 jQuery 的幾個(gè)核心函數(shù),在 jQuery 中它們起著至關(guān)重要的作用,在實(shí)際的前端開(kāi)發(fā)過(guò)程中用到最多的也是它們。2010-03-03
jquery入門(mén)必備的基本認(rèn)識(shí)及實(shí)例(整理)
本文整理了一些jquery入門(mén)必備的基本知識(shí)及相關(guān)實(shí)例,適合初學(xué)者學(xué)習(xí),另附一些jquery的常用事件,感興趣的各位可不要錯(cuò)過(guò)了哈2013-06-06
jQuery 練習(xí)[二] jquery 對(duì)象選擇器(1)
根據(jù) id 選擇(通過(guò) id 只能選擇一個(gè)對(duì)象), 如: $("#div2") ,jquery 對(duì)象選擇器是jquery的一個(gè)亮點(diǎn)。2010-05-05
基于jquery自己寫(xiě)tab滑動(dòng)門(mén)(通用版)
今天與大家分享一下,自己寫(xiě)的滑動(dòng)門(mén)。在網(wǎng)上也搜索了一下,沒(méi)發(fā)現(xiàn)比較好的,于是乎自己寫(xiě)一吧~寫(xiě)起來(lái)也很簡(jiǎn)單,為了方便使用,我已經(jīng)盡量封裝好了。好吧,閑話少說(shuō),直接上代碼吧2012-10-10
jQuery圖片切換插件jquery.cycle.js使用示例
Cycle供了非常好的功能來(lái)幫助大家更簡(jiǎn)單的使用插件的幻燈功能,下面是它的一個(gè)非常不錯(cuò)的示例,大家可以學(xué)習(xí)下2014-06-06
jQuery調(diào)用WebService的實(shí)現(xiàn)代碼
jQuery調(diào)用WebService的實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-06-06
jQuery響應(yīng)enter鍵的實(shí)現(xiàn)思路
當(dāng)用戶(hù)在表單里數(shù)據(jù)完數(shù)據(jù)后,之間按enter鍵就可以執(zhí)行查詢(xún)或者保存的操作。實(shí)現(xiàn)的思路如下2014-04-04
jQuery刪除當(dāng)前節(jié)點(diǎn)元素
本文給大家分享一段代碼給大家介紹jquery刪除當(dāng)前節(jié)點(diǎn)元素的方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),需要的朋友參考下吧2016-12-12

