在jquery中从数据属性中检索布尔数据
我试图从html DIV元素中检索布尔types的数据属性,但是当string转换为布尔值时,它总是返回false。
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/
jQuery .data()
方法非常聪明,可以识别布尔值和数值,并将它们转换为原生types。 所以$('#test').data('return');
返回布尔值true
,而不是"true"
。
如果你想获得原始数据(没有自动数据转换),你可以使用.attr()
:
$('#test').attr("data-return");
请看这里的工作testing用例: http : //jsfiddle.net/jfriend00/6BA8t/
jQuery将string“true”识别为布尔对应(在数据属性的上下文中),因此:
typeof isreturn_str; // boolean
但是你严格的比较string'true'
,由于string不是布尔值,所以会产生false。
"true"
是内部铸造布尔(尝试alert (typeof(isreturn_str))
),因此您的===
比较types检查失败。
你可以调用.toString()
isreturn_str = $('#test').data('return').toString();
我正在使用jQuery 2.1.0,我必须使用eval
// $('#test').attr("data-return");" doesn't works eval($('#test').attr("data-return"));