2012-04-04 44 views
20

我在我的HTML源代碼如下:如何獲取HTML數據值作爲字符串與jQuery?

<li><a href="#" data-value="01">Test</a></li> 

我想要得到的數據屬性的值,所以我現在用的是以下幾點:

var abc = $(this).data('value'); 

這工作好但如果有領先的零。例如,上面的 將值「1」放入abc。

有沒有辦法讓我不能將「01」轉換爲「1」?

+0

[HTML數據和看起來像一個數字的字符串]的可能重複(http://stackoverflow.com/questions/7912601/html-data-and-a-string-that-looks-like-a-number ) – j08691 2012-04-04 16:41:20

+0

我不知道「數據值」是「」元素的正確屬性。使用'rel'屬性不是更好嗎? – JakeJ 2012-04-04 16:48:46

+1

@JakeJ - 請參閱http:// ejohn。org/blog/html-5-data-attributes/ – j08691 2012-04-04 17:21:58

回答

38
this.dataset.value; 

// Or old school 
this.getAttribute('data-value'); 

const a = document.querySelector("a"); 
 
console.log('Using getAttribute, old school: ', a.getAttribute('data-value')); 
 
console.log('Using dataset, conforms to data attributes: ', a.dataset.value);
<ul> 
 
    <li><a href="#" data-value="01">Test</a></li> 
 
</ul>

感謝@MaksymMelnyk的擡頭上dataset

+7

+1當不需要時不使用jQuery。 – 2012-04-04 17:21:19

+0

謝謝,弗洛裏安,如果可能的話,我通常更願意用直線JS回答。但是,如果OP已經在使用jQuery,'attr'可能是一個更好的選擇,因爲在某些邊緣情況下,getAttribute可能會跨越瀏覽器,例如當屬性是DOM使用的屬性時,比如'obj.disabled' 。 – 2012-04-04 17:28:33

+0

那麼,你可以使用'this.dataValue'然後:)我不知道這個附近有任何bug。 – 2012-04-04 17:33:35

15

您可以使用jQuery的ATTR()操作:

var abc = $(this).attr('data-value'); 
4
$(this).attr('data-value'); 

這將返回字符串值與領先的0

2

你試過?:

$(this).attr('data-value'); 

$(this).attr('data-value').toString(); 
+1

'$ .attr'不需要'toString',它已經返回一個字符串,即使它沒有,如果它已經被轉換爲數字,調用'toString'不會返回原始字符串。 – 2012-04-04 16:53:29

12

jQuery data() documentation,看來,你必須使用.attr ()以防止自動類型轉換:

每次嘗試轉換將字符串轉換爲JavaScript值(這包括布爾值,數字,對象,數組和空值),否則它保留爲字符串。要將值的屬性作爲字符串檢索,而不嘗試轉換它,請使用attr()方法。當數據屬性是一個對象(以'{')或數組(以'['開頭)開始,那麼jQuery.parseJSON用於解析字符串;它必須遵循有效的JSON語法,包括帶引號的屬性名稱。數據屬性在第一次訪問數據屬性時被取出,然後不再被訪問或變異(所有的數據值都被內部存儲在jQuery中)。

所以,不要重複其他的答案,而是要加強,而不做類型轉換來訪問該屬性的方法是:

var abc = $(this).attr('data-value'); 
1

嘗試:

this.data('value'); 

我覺得這是獲取數據屬性值的最佳方法。

相關問題