2012-07-13 29 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

相關問題