在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(); 

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

我正在使用jQuery 2.1.0,我必须使用eval

 // $('#test').attr("data-return");" doesn't works eval($('#test').attr("data-return"));