2012-03-29 25 views
49

ブール型のデータ属性をhtml DIV要素から取得しようとしていますが、文字列がブール値に変換されると常にfalseを返します。jqueryのデータ属性からブール値データを取得します

HTML

<div id='test' data-return="true"></div> 

JS

isreturn_str = $('#test').data('return'); 
isreturn = (isreturn_str === 'true'); 
if (isreturn) { 
    document.write("It is true"); 
} else { 
    document.write("It is false"); 
} 

出力

それは偽

http://jsfiddle.net/neilghosh/494wC/

0123です

答えて

83

を呼び出すことができます。だから、これはブールtrue、ない"true"を返します。

$('#test').data('return'); 

あなたは(自動データ変換なし)生データを取得したい場合は、あなたが.attr()を使用することができます。

$('#test').attr("data-return"); 

作業テストケースを参照してください。ここに:http://jsfiddle.net/jfriend00/6BA8t/

+10

"true"と "false"の属性値が正しく動作するためには小文字であることを確認してください。 –

+2

には、MVCとの互換性のために、大文字と小文字を区別しない方法がありますか? –

+0

@TomerW - いいえ、 '.data()'と '.attr()'やDOMの関数 '.getAttribute()'も大文字と小文字を区別します。 – jfriend00

4

それは、このようにブール値(データ属性の文脈で)対応していてjQueryの「真」の文字列を認識します。

typeof isreturn_str; // boolean 

いますが、厳密には文字列ではないとFALSEになり、文字列'true'に比較していますブール値

3

"true"は内部的にブール値にキャストされています(alert (typeof(isreturn_str))を試してください)。したがって、===の比較で型チェックが失敗します。

あなたはjQueryの.data()方法は、ブールと数値を認識についてスマートですし、彼らのネイティブ型に変換し.toString()

isreturn_str = $('#test').data('return').toString(); 

http://jsfiddle.net/494wC/8/

+0

フィドルへのリンクがここでコードを開いていませんでした。あなたは見てみることができますか? –

0

私はjqueryの2.1.0を使用していると私はevalを

// $('#test').attr("data-return");" doesn't works 
eval($('#test').attr("data-return")); 
を使用する必要があります
関連する問題