amazeUI復擇框問題解決
2018年04月12日
這是官方github參考文件,各種坑,不好用,這讓我想到了當時用 layUI 的1.0版本遇到的各種問題。
上菜:
<div class=”am-u-sm-9″>
<div class=”checkbox-group” id=”g_0″>
<div class=”am-checkbox”>
<input id=”p_0″ type=”checkbox” name=”par” value=”1″>
<label for=”p_0″> 使用者列表</label>
</div>
<div class=”am-checkbox”>
<div class=”am-checkbox”>
<label><input data-g=”g_0″ type=”checkbox” name=”chi” value=”2″> 業務員</label>
</div>
</div>
<div class=”am-checkbox”>
<div class=”am-checkbox”>
<label><input data-g=”g_0″ type=”checkbox” name=”chi” value=”3″> 普通使用者</label>
</div>
</div>
</div>
<div class=”checkbox-group” id=”g_1″>
<div class=”am-checkbox”>
<input id=”p_1″ type=”checkbox” name=”par” value=”4″>
<label for=”p_1″> 系統管理</label>
</div>
<div class=”am-checkbox”>
<div class=”am-checkbox”>
<label><input data-g=”g_1″ type=”checkbox” name=”chi” value=”5″> 管理員列表</label>
</div>
</div>
<div class=”am-checkbox”>
<div class=”am-checkbox”>
<label><input data-g=”g_1″ type=”checkbox” name=”chi” value=”6″> 角色列表</label>
</div>
</div>
<div class=”am-checkbox”>
<div class=”am-checkbox”>
<label><input data-g=”g_1″ type=”checkbox” name=”chi” value=”8″> 許可權列表</label>
</div>
</div>
</div>
</div>
上面的是動態生成的html
下面js程式碼
$(function(){
//父級選擇框
$(`input[name=”par”]`).change(function(){
if($(this).prop(`checked`) == true){
$(this).parent().parent().find(`input`).prop(`checked`,true);
}else{
$(this).parent().parent().find(`input`).prop(`checked`,false);
}
});
//子級選擇框
$(`input[name=”chi”]`).change(function(){
var param_a = $(this).attr(`data-g`);
var param_b = [];
var param_c = [];
var param_d,param_e;
//獲取當前父級下面所有子集集合
$(`#` + param_a + ` input[name=”chi”]`).each(function(){
var all = $(this);
param_c.push(all.val());
});
param_d = param_c.length;
//獲取當前父級下面選中的子集集合
$(`#` + param_a + ` input[name=”chi”]:checked`).each(function(){
var selected = $(this);
param_b.push(selected.val());
});
param_e = param_b.length;
if(param_d == param_e){
$(this).parent().parent().parent().parent().find(`input[name=”par”]`).prop(`checked`,true);
}else{
$(this).parent().parent().parent().parent().find(`input[name=”par”]`).prop(`checked`,false);
}
console.log(`selected== `+param_b);
console.log(`all== `+param_c);
});
});
第一種:重點來了,上面判斷邏輯是:判斷當前父級下的選中的子集集合長度是否等於當前父級下的子集集合長度。
param_d == param_e
為什麼要判斷陣列長度而不是直接判斷陣列呢?
第二種:判斷陣列簡單的辦法如下,這種方法只能判斷英文字母,不能帶有數字,動態生成的html標籤帶有數字
JSON.stringify(param_c) === JSON.stringify(param_b)
兩種方法都可以實現,用最簡單的方法來寫
相關文章
- 通過Observable解決搜尋框問題
- ListView Item 選擇問題解決之道View
- 驚群問題|復現|解決
- 解決「問題」,不要解決問題
- 解決Windows安全性登入彈框的問題Windows
- 輸入框軟鍵盤遮擋問題解決方案
- layer彈框刪除ztree節點非阻塞問題解決
- iOS解決鍵盤彈出遮擋輸入框問題iOS
- 用PriorityQueue解決選擇最小的K個數問題
- 解決問題
- 直播平臺原始碼,關於彈出框中輸入框被遮擋問題解決原始碼
- 流量卡哪個最划算?解決流量卡選擇問題
- 發現問題,解決問題
- 解決antdesign頁面滑動時下拉框漂浮的問題
- 解決select2 在modal中搜尋框無效的問題
- 巧用CSS解決asp.net中Gridview邊框樣式問題CSSASP.NETView
- 7 種方案解決移動端1px邊框的問題
- 【MySQL】崩潰恢復問題解決:Forcing InnoDB RecoveryMySql
- 支付寶漏洞 - 問題剖析&熱修復解決方案
- yum問題解決
- sqlitedabaseislocked問題解決SQLite
- dump 解決問題
- 利用flex佈局解決ios輸入框被鍵盤遮擋問題FlexiOS
- flutter - 使用 SingleChildScrollView() 解決鍵盤遮擋輸入框的問題FlutterView
- LLM面面觀之LLM復讀機問題及解決方案
- 熱修復問題被拒解決(含蘋果聯絡方式)蘋果
- oracle 816 imp恢復資料遇到問題及解決Oracle
- 提問題比解決問題更重要
- SERVICE問題解決方法
- 解決高度塌陷問題
- qeephp 解決跨越問題PHP
- bg配置問題解決
- git ssl 問題解決Git
- AIX問題解決思路AI
- WAS startnode hang問題解決
- 解決grub rescue問題
- 解決跨域問題跨域
- Backup And Recovery User's Guide-介質恢復問題解決-調查介質恢復問題:階段1GUIIDE