我正在使用jquery将true和false字符串写入data-html属性。但是,当我将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>");
}
})
})();
答案 0 :(得分:1)
Boolean('false')
将返回true
,因为字符串'false'
是真实的。
您可以只是检查字符串是否等于&#39; false&#39;:
if ($(this).attr("data-is-panel-activated") === 'false') {
.....
}
答案 1 :(得分:0)
最简单的解决方法是:
var is_activate = $(this).attr("data-is-panel-activated") !== "false";
或
var is_activate = $(this).attr("data-is-panel-activated") === "true";
取决于哪种语义对您的代码更有意义。