如何讀取數據屬性的值並檢查屬性是否不存在?缺少.data()的測試結果
例如:
var value = $(selector).data('myData');
什麼是檢查data-myData
屬性缺失或不包含數據的最可靠的方法是什麼?如果它缺少,我做`value.length',那麼我會得到一個錯誤。
我知道我可以使用hasData()
但是,如果數據在那裏,我需要它,看起來效率低於兩次檢查值。
如何讀取數據屬性的值並檢查屬性是否不存在?缺少.data()的測試結果
例如:
var value = $(selector).data('myData');
什麼是檢查data-myData
屬性缺失或不包含數據的最可靠的方法是什麼?如果它缺少,我做`value.length',那麼我會得到一個錯誤。
我知道我可以使用hasData()
但是,如果數據在那裏,我需要它,看起來效率低於兩次檢查值。
我通常只是做:
var value = $(selector).data('myData') || '';
// or || 0;
// or || someBackupVariable;
// (just depends on what you want/need)
至少這樣你有一個後備價值,所以當你操作變量value
它不會打破它。
FWIW,這個方法失敗了'false','0'和'「」'值:http://jsfiddle.net/Qr3R7/1/。因此你的答案不能被認爲是正確的。 – VisioN
那麼這就是爲什麼'||'部分很重要,因爲你需要知道你想要什麼作爲備份。在'false/0 /'''的情況下,將其中任何一個作爲默認情況都可以,因爲false會默認爲false。 'var value = $('#test')。data('mydata')||假;也嘗試將其更改爲「真」。 http://jsfiddle.net/Qr3R7/2/ –
@VisioN除非該數據值永遠不會包含這樣的值,或者如果這樣的值在邏輯中意味着錯誤。 –
如何獲得這樣的值:
var value = $(selector).data('myData');
if (!value) do a hasData()
@ZoltanToth:感謝您的編輯。 – closure
我不認爲這是低效率的,但如果你真的不想讀了兩遍,你應該檢查undefined
:
value = $(selector).data('myData');
if (typeof value === "undefined") {
...
我會簡單地使用它的truethy值。 '如果(值){alert(「它有一個值!」)}'唯一的缺點是如果數據包含falsy值,if將會失敗。這可以通過基於它應該包含的數據的簡單「==」比較來處理。 –