jQuery`data`方法不转换值

时间:2012-11-06 11:21:49

标签: jquery asp.net-mvc

我在视图中有以下代码:

<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。

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

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

修改

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

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

答案 1 :(得分:0)

如果您使用data方法设置数据,则可以将其另存为bool:

$('#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

与bool解析最接近的是

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

var str = $('#wiz_main').data('agent');
var agentbool = parseBool(str);