2016-07-29 15 views
0

jqueryを使用して、真と偽の文字列をdata-html属性に書き出します。しかし、属性の1つにfalseを書き込み、それをfalseにチェックするとtrueを返します。私はまたそれをすることになっていることをオンラインで読んでいるが、実際には意味をなさない。ブール値( "false")はtrueを返します。

誰かに代替手段がありますか?どんな助けでも本当にありがとう!文字列'false'がtruthyあるので

(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>"); 
     } 
    }) 
})(); 
+5

文字列 '' false ''が真実であるため、なぜvar is_activate = $(this).attr(" data-is-panel-activated ")をチェックできません!==' false ';' –

+1

'JSON.parse(" false ")' – bassxzero

+0

なぜデータをブーリアンではなくattrsに書き込むのですか? –

答えて

1

Boolean('false')trueを返します。

あなただけの文字列が '偽' と等しいかどうかを確認するためのチェックを実行することができます:

if ($(this).attr("data-is-panel-activated") === 'false') { 
    ..... 
} 
+0

はい、私がやったことが終わった。ブール値を解析する他の方法があるかどうかを調べたいだけでした。提案をありがとう:) – json1

0

最も簡単な修正は次のようになりますに応じて

var is_activate = $(this).attr("data-is-panel-activated") !== "false"; 

または

var is_activate = $(this).attr("data-is-panel-activated") === "true"; 

どのセマンティクスがあなたのコードにとって意味があるのでしょうか。

+0

演算子等価比較演算子( '=='、 '!='、 '<','>' ..など)はブール値を返します – slebetman

関連する問題