28

ソースHTMLには次のものがあります。

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

data 属性の値を取得したいので、以下を使用しています。

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

これは正常に機能しますが、先行ゼロがある場合は機能しません。たとえば、上記は値「1」を abc に配置します。

「01」を「1」に変換しないようにする方法はありますか?

4

7 に答える 7

53
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 に感謝します

于 2012-04-04T16:38:25.247 に答える
17

jQuery の attr() 演算子を使用できます。

var abc = $(this).attr('data-value');
于 2012-04-04T16:38:34.530 に答える
13

jQuery data() documentationから、自動型変換を防ぐために .attr() を使用する必要があるようです:

文字列を JavaScript 値 (ブール値、数値、オブジェクト、配列、および null を含む) に変換しようとするあらゆる試行が行われます。それ以外の場合は、文字列のままになります。値の属性を変換せずに文字列として取得するには、attr() メソッドを使用します。データ属性がオブジェクト (「{」で始まる) または配列 (「[」で始まる) の場合、jQuery.parseJSON を使用して文字列が解析されます。引用符で囲まれたプロパティ名を含む有効な JSON 構文に従う必要があります。data- 属性は、 data プロパティが最初にアクセスされたときに取得され、その後はアクセスまたは変更されません (その後、すべてのデータ値は jQuery に内部的に保存されます)。

したがって、他の回答を複製するのではなく、強化するために、型変換を行わずに属性にアクセスする方法は次のとおりです。

var abc = $(this).attr('data-value');
于 2012-04-04T16:43:32.750 に答える
6
$(this).attr('data-value');

これは、先頭に 0 を付けた文字列値を返します。

于 2012-04-04T16:39:57.157 に答える
3

やってみました?:

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

また

$(this).attr('data-value').toString();
于 2012-04-04T16:40:25.917 に答える