Compare jquery .data() with String always false
Compare jquery .data() with String always false
首先是小提琴:http://jsfiddle.net/6d82Q/1/
在我的HTML中我有:
<div class="myClass" data-status="true"></div>
<div class="myClass" data-status="false"></div>
我想根据状态为div添加一个CSS-class:
$('.myClass').each(function()
{
// compare status
if($(this).data('status') == 'true')
{
$(this).addClass('myTrueClass');
}
else
{
$(this).addClass('myFalseClass');
}
});
问题是,总是添加myFalseClass
。我的问题是:如何解决这个问题,为什么它会首先发生?
试试,
$('.myClass').each(function()
{
if($(this).data('status'))
{
$(this).addClass('myTrueClass');
}
else
{
$(this).addClass('myFalseClass');
}
});
因为.data(key)
会自动将"true"转换为布尔值。
当然,如果你想获得"true"作为一个字符串,那么只需使用.attr("data-status")
.data()
方法将对[data-*]
属性执行一些自动强制转换,这使得向客户端传递数据非常方便。
当您存储将自动转换为布尔值的内容时,您可以使用:
if ($(this).data('status')) {
...
} else {
...
}
如果你需要确保值是true
,而不仅仅是真值(如1
的值),那么一定要使用引用比较:
if ($(this).data('status') === true) {
...
} else {
...
}
作为题外话,当您可以简单地将函数传递给
.addClass()
时,没有理由调用.each()
:
$('.myClass').addClass(function () {
return $(this).data('status') ? 'myTrueClass' : 'myFalseClass';
});
你必须这样做:
if($(this).data('status') === true)
{
$('#out').append('true <br>');
}
else
{
$('#out').append('false <br>');
}
更新小提琴
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 如何在MongoDB中将String转换为Array
- how to split a string with ','
- Protractor:element.getText()返回一个对象,而不是String
- 如何在不在本地下载的情况下将url中提供的文件(pdf/doc)转换为json/string/base64格式
- Javascript 如何强制 string.replace 不将我的字符串解释为正则表达式
- JavaScript警报适用于int,但不适用于string
- javascript/angularjs 将 String 与 number for loop 连接起来
- 如何在Android中将Javascript返回值转换为String
- 如何在javascript中对以下字符串使用string.split()
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- 使用JavaScript在Json中提取时,将数组的元素转换为String
- 是否存在将String转换为可执行的c++表达式的方法
- JavaScript - String.newProperty vs. String.prototype.newProp
- 如何将参数应用于String.prototype.format函数
- 在JavaFX的String中包含本地javascript源
- 如何在javascript中将String变量转换为int
- “*[attribute ^="string”是如何/为什么是有效的querySelector?(JS bug
- 为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”
- Compare jquery .data() with String always false