Retrieve boolean data from data attribute in jquery
I am trying to retrieve a data attribute of type Boolean from an html DIV element , however it is always returning false when the string is converted to boolean .
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");
}
output
It is false
http://jsfiddle.net/neilghosh/494wC/
The jQuery .data()
method is smart about recognizing boolean and numeric values and converts them into their native type. So this returns the boolean true
, not "true"
:
$('#test').data('return');
If you want to get the raw data (without the automatic data conversion), you can use .attr()
:
$('#test').attr("data-return");
See the working test case here: http://jsfiddle.net/jfriend00/6BA8t/
jQuery recognizes the string "true" as it's boolean counterpart (in the context of data attributes) and thus:
typeof isreturn_str; // boolean
but you're strictly comparing to the string 'true'
which yields false as a string is not a boolean.