从jquery中的data属性中检索布尔数据

Nei*_*eil 60 jquery html5

我试图从html DIV元素检索Boolean类型的数据属性,但是当字符串转换为boolean时,它总是返回false.

HTML

<div id='test' data-return="true"></div>
Run Code Online (Sandbox Code Playgroud)

JS

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

产量

这是假的

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

jfr*_*d00 107

jQuery .data()方法很聪明地识别布尔值和数值并将它们转换为它们的本机类型.所以这会返回布尔值true,而不是"true":

$('#test').data('return');
Run Code Online (Sandbox Code Playgroud)

如果要获取原始数据(不进行自动数据转换),可以使用.attr():

$('#test').attr("data-return");
Run Code Online (Sandbox Code Playgroud)

在这里查看工作测试用例:http://jsfiddle.net/jfriend00/6BA8t/

  • 请确保您的"true"和"false"属性值为小写,以使其正常工作. (13认同)
  • 对于MVC兼容性,有没有办法让它不区分大小写? (2认同)
  • 谢谢使用.data()方法正是我需要从数据属性返回一个布尔值.到目前为止,我一直在努力使用.attr(). (2认同)

Yos*_*shi 6

jQuery识别字符串"true",因为它是布尔对应物(在数据属性的上下文中),因此:

typeof isreturn_str; // boolean
Run Code Online (Sandbox Code Playgroud)

但是你要严格比较'true'产生错误的字符串,因为字符串不是布尔值.