如何使用jQuery将HTML数据值作为字符串获取?

Sam*_*tar 26 javascript jquery

我在源HTML中有以下内容:

<li><a href="#" data-value="01">Test</a></li>
Run Code Online (Sandbox Code Playgroud)

我想获取data属性的值,所以我使用以下内容:

var abc = $(this).data('value');
Run Code Online (Sandbox Code Playgroud)

这样可以正常但是如果有一个前导零.例如,上面将值"1"放入abc.

有没有办法可以让它不将"01"转换为"1"?

Jua*_*des 49

this.dataset.value;

// Or old school
this.getAttribute('data-value');
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)
<ul>
  <li><a href="#" data-value="01">Test</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

感谢@MaksymMelnyk对数据集的了解

  • +1时不使用jQuery,绝对不需要. (9认同)
  • @JuanMendes,@ FlorianMargaine`his.dataset.value`将具有该值. (2认同)

joe*_*t45 16

您可以使用jQuery的attr()运算符:

var abc = $(this).attr('data-value');
Run Code Online (Sandbox Code Playgroud)


Mik*_*ike 13

jQuery data()文档中,您似乎必须使用.attr()来阻止自动类型转换:

每次尝试都将字符串转换为JavaScript值(这包括布尔值,数字,对象,数组和null),否则它将保留为字符串.要将值的属性检索为字符串而不尝试转换它,请使用attr()方法.当data属性是一个对象(以'{'开头)或数组(以'['开头)时,则使用jQuery.parseJSON来解析字符串; 它必须遵循有效的JSON语法,包括引用的属性名称.数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(然后所有数据值都在内部存储在jQuery中).

因此,不要复制其他答案,而是强调,在不进行类型转换的情况下访问属性的方法是:

var abc = $(this).attr('data-value');
Run Code Online (Sandbox Code Playgroud)


Bra*_*ord 6

$(this).attr('data-value');
Run Code Online (Sandbox Code Playgroud)

这将返回以0开头的字符串值。