javascript - 为什么一种设置 prop 的方法不起作用(jQuery)?

标签 javascript jquery

Commment.isDefault 的计算结果为“true”或“false”。

目标是动态更新复选框。

这有效:

if (Comment.isDefault == 'false'){
  // console.log("Checked.");
  $('#chkDefault'+ i).prop('checked', true);
}
else {
  // console.log("NOT Checked.");
  $('#chkDefault'+ i).prop('checked', false);
}

这不起作用:

$('#chkDefault'+ i).prop('checked', Comment.isDefault);

非工作情况只会使每个复选框都为 TRUE。

我想要更优雅的解决方案,并了解为什么仅使用变量来设置属性不起作用。

想法?非常感谢!

最佳答案

如果你尝试这样做:

 console.log(typeof Comment.isDefault); // string
 console.log(typeof "false"); // string
 console.log(typeof false); // bool

也不是空字符串总是true(!返回相反的 bool 值,所以!!返回 bool 值等价)

 console.log(!!"true") // true 
 console.log(!!"false") // true 
 console.log(!!"") // false 
 console.log(!!true) // true
 console.log(!!false) // false 

您必须更新(最佳选择):

 Comment.isDefault = true; // or = false; instead of 'true' 

或者您也可以测试字符串值(如果您无法轻松更新 Comment.isDefault 值):

$('#chkDefault'+ i).prop('checked', Comment.isDefault == 'true');

关于javascript - 为什么一种设置 prop 的方法不起作用(jQuery)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43394261/

相关文章:

javascript - 使用 ajax 上下文并不能解决范围问题

javascript - 如何将数组传递到mssql查询字符串中?

javascript - 如何检查表单是否在jquery中填写?

javascript - Javascript 数字格式正则表达式不起作用

Javascript/jQuery : How to prevent active input field from being changed?

javascript - Ajax 不工作

javascript - 从外部网站获取内容?

javascript - jQuery 事件处理程序 - 内存使用

javascript - 提交 youtube 播放列表 ID 并从 id 加载播放列表

JavaScript 异步问题