2012-07-13 30 views
1

正确的价值是否有检查属性更好的方法:检查,如果HTML属性存在,并且具有与jQuery

  1. 它存在。所以值必须为假,如果属性不存在
  2. 值是正确的(布尔)
var isOwner = false; 
    if ($(selectedItem).is('[data-isOwner="True"]') || $(selectedItem).is('[data-isOwner="true"]')) { 
     isOwner = true; 
    } else { 
     isOwner = false; 
    } 

现在,我需要检查“真”“真” ...

感谢

回答

3

您可以将存储在数据isOwner为小写,只比较值的,以“真值”。

if (($(selectedItem).attr ('data-isOwner') || '').toLowerCase() == 'true') 

以上使用<wanted-value> || ''将让这个如果将selectedItem没有属性数据isOwner将导致一个空字符串表达式,在其上可以拨打电话来降低箱数,没有错误。

如果没有这个,你不得不手动检查,这样的属性是确实存在的小黑客,否则你会尝试调用toLowerCase未定义对象时遇到一个运行时错误


如果发现前面提到的解决方案扑朔迷离,你可以使用的东西作为

var attr_value = $(selectedItem).attr ('data-isOwner'); 

if (typeof(attr_value) == 'string' && attr_value.toLowerCase() == 'true') { 
    ... 
} 
+0

我喜欢你approache。它也可以检查类型安全吗?我用ASP .NET MVC4和C#设置属性,所以它是一个布尔值。我应该将小写解析为布尔值吗?然后比较:===真? – 2012-07-13 14:44:16

+0

我认为每个值总是出现在字符串,除非你解析它到你的JS的东西。 – index 2012-07-13 20:11:11

+0

@LockTar如果你在一个元素的属性中存储一个值,当使用'$(selector).attr(key)'或者等价物时,它将是一个字符串类型,如果你想以不同的方式处理它,你需要提供你的自己包装在吸气剂周围。 – 2012-07-13 21:46:16

相关问题