【问题标题】:String equality returning false when strings are equal当字符串相等时,字符串相等返回 false
【发布时间】:2012-10-19 04:42:58
【问题描述】:

我有一个锚元素:

<a id="buyBtn" href="#" alt="Purchase" title="Buy now" data-enabled="true">

当它被点击时,我正在这样做:

enabled = $(this).data('enabled') == "true";
console.log(enabled);

但是,控制台显示false。我最初使用的是===,但那是错误的,所以我搬到了==

【问题讨论】:

  • 你从console.log($(this).data('enabled'))得到什么?
  • 工作示例展示了这里的作用:jsfiddle.net/FsP3j/1
  • @Cthulhu - 实际上,问题是 OP 使用了=== "true" 而不是=== true。面对,遇见手掌,doh si doh。
  • @Cthulhu:这不是当前的问题。问题是 jquery 自动将字符串 'true' 转换为布尔值true

标签: javascript jquery


【解决方案1】:

这个问题的接受答案详细说明了原因:

Retrieve boolean data from data attribute in jquery

jQuery 的.data() 方法非常聪明,可以将“true”/“false”数据字符串转换为真正的布尔值。

严格比较运算符检查类型,但由于您将字符串与布尔值进行比较而失败。

"true" === true // false

【讨论】:

  • 哦,哇...嘘。我永远也猜不到这一点。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
相关资源
最近更新 更多