ソースHTMLには次のものがあります。
<li><a href="#" data-value="01">Test</a></li>
data 属性の値を取得したいので、以下を使用しています。
var abc = $(this).data('value');
これは正常に機能しますが、先行ゼロがある場合は機能しません。たとえば、上記は値「1」を abc に配置します。
「01」を「1」に変換しないようにする方法はありますか?
ソースHTMLには次のものがあります。
<li><a href="#" data-value="01">Test</a></li>
data 属性の値を取得したいので、以下を使用しています。
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 に感謝します
jQuery の attr() 演算子を使用できます。
var abc = $(this).attr('data-value');
jQuery data() documentationから、自動型変換を防ぐために .attr() を使用する必要があるようです:
文字列を JavaScript 値 (ブール値、数値、オブジェクト、配列、および null を含む) に変換しようとするあらゆる試行が行われます。それ以外の場合は、文字列のままになります。値の属性を変換せずに文字列として取得するには、attr() メソッドを使用します。データ属性がオブジェクト (「{」で始まる) または配列 (「[」で始まる) の場合、jQuery.parseJSON を使用して文字列が解析されます。引用符で囲まれたプロパティ名を含む有効な JSON 構文に従う必要があります。data- 属性は、 data プロパティが最初にアクセスされたときに取得され、その後はアクセスまたは変更されません (その後、すべてのデータ値は jQuery に内部的に保存されます)。
したがって、他の回答を複製するのではなく、強化するために、型変換を行わずに属性にアクセスする方法は次のとおりです。
var abc = $(this).attr('data-value');
$(this).attr('data-value');
これは、先頭に 0 を付けた文字列値を返します。
やってみました?:
$(this).attr('data-value');
また
$(this).attr('data-value').toString();