在下面的示例中,我需要第一个复选框为checked
,第二个和第三个复选框分别为unchecked
目前我正在获取所有的checked
let data = {"admin":"true","nts":"false","chat":"false"};
$('button').on('click', function(){
$('.bcheck').each(function(){
let x = $(this).attr('data-x');
$(this).attr('checked', data[x]);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='checkbox' class='bcheck' data-x='admin'>
<input type='checkbox' class='bcheck' data-x='nts'>
<input type='checkbox' class='bcheck' data-x='chat'>
<button>CLICK</button>
data
对象中的值都是字符串。因此,它们都将评估为true
。丢掉绳子,让它们变成布尔。
let data = {
"admin": true,
"nts": false,
"chat": false
};
$('button').on('click', function() {
$('.bcheck').each(function() {
let x = $(this).attr('data-x');
console.log(data[x]);
$(this).attr('checked', data[x]);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='checkbox' class='bcheck' data-x='admin'>
<input type='checkbox' class='bcheck' data-x='nts'>
<input type='checkbox' class='bcheck' data-x='chat'>
<button>CLICK</button>
字符串"false"
不是falsy(请在控制台中尝试!!"false" === true
(。你能把字符串改成正则布尔值(false
(吗?
编辑应该这样做:
let transformedData = {};
const dataEntries = Object.entries(data).map((entry) => {
return { [entry[0]]: !(entry[1] === "false") };
});
for (const entry of dataEntries) {
transformedData = { ...transformedData, ...entry };
}