Boolean(“false”)返回true ..任何替代?

时间:2016-07-29 03:06:25

标签: javascript jquery

我正在使用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>");
        }
    })
})();

2 个答案:

答案 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";

取决于哪种语义对您的代码更有意义。