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解決搜尋框問題
- 驚群問題|復現|解決
- 解決Windows安全性登入彈框的問題Windows
- layer彈框刪除ztree節點非阻塞問題解決
- 解決antdesign頁面滑動時下拉框漂浮的問題
- flutter - 使用 SingleChildScrollView() 解決鍵盤遮擋輸入框的問題FlutterView
- 用PriorityQueue解決選擇最小的K個數問題
- 直播平臺原始碼,關於彈出框中輸入框被遮擋問題解決原始碼
- 解決select2 在modal中搜尋框無效的問題
- 7 種方案解決移動端1px邊框的問題
- 流量卡哪個最划算?解決流量卡選擇問題
- 利用flex佈局解決ios輸入框被鍵盤遮擋問題FlexiOS
- LLM面面觀之LLM復讀機問題及解決方案
- 解決vscode快速修復快捷鍵(ctrl+.)失效的問題VSCode
- 提問題比解決問題更重要
- 解決跨域問題跨域
- SERVICE問題解決方法
- 解決 Unexpectedlexicaldeclarationincaseblock的問題BloC
- 解決mapper重名問題APP
- qeephp 解決跨越問題PHP
- 解決高度塌陷問題
- 使用 SVG transform rotate 解決畫框中的數字跟隨旋轉的問題SVGORM
- 8 種方案解決重複提交問題!你選擇哪一種呀?
- 死鎖問題排查過程-間隙鎖的復現以及解決
- 解決 github 訪問不了的問題Github
- 解決github訪問慢的問題Github
- 解決 Github 國內訪問問題Github
- No module named MYSQLdb 問題解決MySql
- rabbitmq解決erlang版本問題MQ
- 解決高度塌陷、定位問題
- display:flex解決的問題Flex
- As常見問題解決方法
- WebSocket跨域問題解決Web跨域
- 解決中文亂碼問題
- Java解決跨域問題Java跨域
- Flask解決跨域問題Flask跨域
- MySQL 中文 like 問題解決MySql
- CROS 解決跨域問題ROS跨域