0

我在视图中有以下代码:

<div id="wiz_main"  data-place-schema="@Model.IsAgent">
...
</div>

这是渲染的代码:

<div id="wiz_main" data-agent="True">
...
</div>

我编写的javascript文件中的代码:

if ($('#wiz_main').data('agent'))
        limit = 1000;
else
        limit = 5;

问题在于,limit总是等于5。为什么?我认为data很聪明,可以将价值转换为bool. 我不想写以下内容:

if ($('#wiz_main').data('agent') == 'True')
       limit = 1000;
else
       limit = 5;

版本jQuery是 1.7.2。

4

2 回答 2

0

你试过这个吗?

if ( $('#wiz_main').attr('data-agent') == 'True' ){....}

编辑

if ( $('#wiz_main').attr('data-agent') ){....}

另外,你为什么不写true而不是写True在你的html中?

于 2012-11-06T11:28:40.037 回答
0

如果您要使用该data方法设置数据,则可以将其保存为布尔值:

$('#wiz_main').data({ agent: true });
var agentbool = $('#wiz_main').data('agent');
console.log(typeof agentbool); //boolean

但是,html5 数据属性将始终存储为字符串

console.log(typeof $('#wiz_main').data('agent')); //string

最接近布尔解析的东西是

function parseBool(str){
    return typeof str === 'string' && str.toLowerCase() === 'true';
}

var str = $('#wiz_main').data('agent');
var agentbool = parseBool(str);
于 2012-11-06T12:05:13.983 回答