我在我的HTML源代碼如下:如何獲取HTML數據值作爲字符串與jQuery?
<li><a href="#" data-value="01">Test</a></li>
我想要得到的數據屬性的值,所以我現在用的是以下幾點:
var abc = $(this).data('value');
這工作好但如果有領先的零。例如,上面的 將值「1」放入abc。
有沒有辦法讓我不能將「01」轉換爲「1」?
我在我的HTML源代碼如下:如何獲取HTML數據值作爲字符串與jQuery?
<li><a href="#" data-value="01">Test</a></li>
我想要得到的數據屬性的值,所以我現在用的是以下幾點:
var abc = $(this).data('value');
這工作好但如果有領先的零。例如,上面的 將值「1」放入abc。
有沒有辦法讓我不能將「01」轉換爲「1」?
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
+1當不需要時不使用jQuery。 – 2012-04-04 17:21:19
謝謝,弗洛裏安,如果可能的話,我通常更願意用直線JS回答。但是,如果OP已經在使用jQuery,'attr'可能是一個更好的選擇,因爲在某些邊緣情況下,getAttribute可能會跨越瀏覽器,例如當屬性是DOM使用的屬性時,比如'obj.disabled' 。 – 2012-04-04 17:28:33
那麼,你可以使用'this.dataValue'然後:)我不知道這個附近有任何bug。 – 2012-04-04 17:33:35
您可以使用jQuery的ATTR()操作:
var abc = $(this).attr('data-value');
$(this).attr('data-value');
這將返回字符串值與領先的0
你試過?:
$(this).attr('data-value');
或
$(this).attr('data-value').toString();
'$ .attr'不需要'toString',它已經返回一個字符串,即使它沒有,如果它已經被轉換爲數字,調用'toString'不會返回原始字符串。 – 2012-04-04 16:53:29
從jQuery data() documentation,看來,你必須使用.attr ()以防止自動類型轉換:
每次嘗試轉換將字符串轉換爲JavaScript值(這包括布爾值,數字,對象,數組和空值),否則它保留爲字符串。要將值的屬性作爲字符串檢索,而不嘗試轉換它,請使用attr()方法。當數據屬性是一個對象(以'{')或數組(以'['開頭)開始,那麼jQuery.parseJSON用於解析字符串;它必須遵循有效的JSON語法,包括帶引號的屬性名稱。數據屬性在第一次訪問數據屬性時被取出,然後不再被訪問或變異(所有的數據值都被內部存儲在jQuery中)。
所以,不要重複其他的答案,而是要加強,而不做類型轉換來訪問該屬性的方法是:
var abc = $(this).attr('data-value');
嘗試:
this.data('value');
我覺得這是獲取數據屬性值的最佳方法。
[HTML數據和看起來像一個數字的字符串]的可能重複(http://stackoverflow.com/questions/7912601/html-data-and-a-string-that-looks-like-a-number ) – j08691 2012-04-04 16:41:20
我不知道「數據值」是「」元素的正確屬性。使用'rel'屬性不是更好嗎? – JakeJ 2012-04-04 16:48:46
@JakeJ - 請參閱http:// ejohn。org/blog/html-5-data-attributes/ – j08691 2012-04-04 17:21:58