2

根据jQuery 的 .data() 文档,您可以使用 .data() 方法为datadom 元素的属性添加前缀。例如:

{# 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 中将这些字符串值转换为布尔值(这看起来很蹩脚)?

4

4 回答 4

3

你的例子很有效:-)

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 猜测 boolean、null、numeric 类型和 JSON(!!!这对我来说是新的)

于 2012-06-07T02:58:17.670 回答
1

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

于 2012-06-07T03:00:34.527 回答
0

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

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

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

$("div").data("hidden") === true;

查看示例代码.data()

于 2012-06-07T03:01:00.120 回答
0

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

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

于 2012-06-07T03:01:20.477 回答