使用 jQuery.data 从 dom 元素获取布尔值

Use jQuery.data to get a boolean from a dom element?

本文关键字:元素 获取 布尔值 dom jQuery data 使用      更新时间:2023-09-26

根据jQuery的.data()文档,你可以使用.data()方法从dom元素中data前缀属性。例如:

{# Include jquery.... #}
<div id='mydiv' data-foo='bar'></div>
<script>
    var foo = $('#mydiv');
    foo.data('foo');   // == 'bar'
</script>

也就是说,我很好奇你如何在这些 dom 对象中设置和传递布尔值。据我所知,这是行不通的:

抛出一个 JavaScript 错误:

{# Include jquery.... #}
<div id='mydiv' data-foo=false></div>

设置字符串而不是布尔值:

{# Include jquery.... #}
<div id='mydiv' data-foo='false'></div>
<script>
    var foo = $('#mydiv');
    foo.data('foo');   // == 'false'
</script>

那么,如何在 dom 中设置布尔值呢?或者,我是否必须在我的 javascript 中将这些字符串值转换为布尔值(这似乎很蹩脚)?

你的例子很好用:-)

http://jsfiddle.net/zerkms/pnsfL/

https://github.com/jquery/jquery/blob/master/src/data.js#L335

data = data === "true" ? true :
data === "false" ? false :
data === "null" ? null :
jQuery.isNumeric( data ) ? parseFloat( data ) :
    rbrace.test( data ) ? jQuery.parseJSON( data ) :
    data;

所以jquery猜测布尔值,null,数字类型和JSON(!!这对我来说是新的)

您可以简单地使用类型转换。 data-foo可以设置为 1 = true0 = false 并使用以下示例:http://jsfiddle.net/QAkQW/

每次尝试都将字符串转换为 JavaScript 值(这包括布尔值、数字、对象、数组和 null),否则将保留为字符串。

你应该能够简单地做这样的事情:(这就是你正在做的事情)

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div>
$("div").data("hidden") === true;

查看示例代码以了解 .data()

如果你想要布尔值,你可以通过设置或不设置此属性来完成。

但似乎jQuery.data已经为你获得了布尔值。