布尔值(“false”)返回true.任何替代方案
Boolean("false") returns true.. any alternative?
我正在使用jquery向data-html属性写入true和false字符串。但是,当我将false写入其中一个属性,然后将其检查为false时,它将返回true。我还在网上读到它应该这么做,这真的毫无意义。
有人有其他选择吗?任何帮助都将不胜感激!
(function() {
// $(".opt-header").click(function () {
$(document).on("click", ".opt-header", function() {
console.log($(this).attr("data-is-panel-activated"));
var is_activate = Boolean($(this).attr("data-is-panel-activated"));
$(this).siblings(":not(.opt-group-toggle)").slideToggle(300);
console.log(is_activate);
if (is_activate) {
$(this).find(".fa-angle-right").replaceWith("<i class='fa fa-angle-down'></i>");
$(this).attr("data-is-panel-activated", "false");
} else {
$(this).attr("data-is-panel-activated", "true");
$(this).find(".fa-angle-down").replaceWith("<i class='fa fa-angle-right'></i>");
}
})
})();
Boolean('false')
将返回true
,因为字符串'false'
是truthy。
您可以运行一个检查,看看字符串是否等于"false":
if ($(this).attr("data-is-panel-activated") === 'false') {
.....
}
最简单的修复方法是:
var is_activate = $(this).attr("data-is-panel-activated") !== "false";
或
var is_activate = $(this).attr("data-is-panel-activated") === "true";
这取决于哪种语义对代码更有意义。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- jQuery中是否内置了任何字符串格式化函数
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- AngularJS-使用'true'属性
- 有任何可能将facebook实时信使整合到一个网站中
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- AJAX:$_GET不返回任何值
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 将事件处理程序绑定到任何可能的事件
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 如果URL中有任何字符串变体匹配,则返回true
- 测试数组中的任何项是否返回 true
- 检查函数是否对数组中的任何项返回true
- 为什么getFile()没有创建任何文件,即使我已经将create标志设置为true
- JavaScript RegEx:如果关键字字符串的任何部分匹配数组中的值,则返回true
- 任何使用!0而不是true的理由
- 布尔值(“false”)返回true.任何替代方案