无需 jQuery 即可访问“数据-”属性

IT技术 javascript
2021-01-15 02:41:24

我可以在没有 jQuery 的情况下访问数据属性吗?

使用 jQuery 很容易,但我无法在没有 jQuery 的情况下看到如何做到这一点。

如果我在 Google 上搜索“没有 jQuery”,我得到的只是 jQuery 示例。

甚至有可能吗?

5个回答

这里我找到了这个例子:

<div id='strawberry-plant' data-fruit='12'></div>
<script>
    // 'Getting' data-attributes using getAttribute
    var plant = document.getElementById('strawberry-plant');
    var fruitCount = plant.getAttribute('data-fruit'); // fruitCount = '12'
    // 'Setting' data-attributes using setAttribute
    plant.setAttribute('data-fruit', '7'); // Pesky birds
</script>

所以这看起来非常可行。

更新:由于 Microsoft 现在(2020 年)正在逐步淘汰旧的 Internet Explorer 引擎,转而使用基于 Chromium 的 Edge,因此该dataset属性很可能适用于任何地方。一段时间内,IE 仍然被强制使用的组织和企业网络将是例外。在撰写本文时 - jsPerf仍然显示 get/setAttribute 方法比使用数据集更快,至少在 Chrome 81 上是这样。

请参阅下面关于数据集的 tomor 答案 - 这是正确的答案,除非您必须支持已弃用的网络浏览器 (IE),如果是这种情况,这对您来说真的很不幸……所有现代浏览器版本都支持 HTML5 和 ECMAScript 5(当然) 和 6 几乎完全在这一点上。
2021-03-16 02:41:24
这似乎是正确的方法。此外,您可能需要执行以下操作: document.getElementById('strawberry-plant').setAttribute('data-fruit', 'Some Data Here');
2021-03-30 02:41:24
似乎也比数据集更具可读性。大多数开发人员第一眼就知道这行代码做了什么,但不太确定你能对数据集说同样的话
2021-03-31 02:41:24

您可以使用数据集属性。如:

element = document.getElementById("el");
alert(element.dataset.name); // element.dataset.name == data-name
注意:虽然完全正确,但这仅适用于符合 HTML5 的浏览器。使用该getAttribute方法将适用于大多数浏览器。
2021-04-02 02:41:24
虽然不一定向后兼容已弃用的浏览器(例如,所有版本的 IE),但这是正确的答案。这在当时(2013 年)当然是前瞻性的,但现在 5 年过去了,这是应该做的。
2021-04-09 02:41:24

它只是一个属性......getAttribute与任何其他属性一样使用:https : //developer.mozilla.org/en/docs/DOM/element.getAttribute

或者我错过了你的问题的重点。

您还可以使用:

getAttribute('data-property');

这更清晰,更容易阅读。

这将获得数据属性的值。

我想你可以试试这个:

var ele = document.getElementById("myelement");
if (ele.hasOwnProperty("data")) {
  alert(ele.data);
}

或使用

alert(ele['data-property']);
来自 MDN 文档,使用 getAttribute 方法是理想的,因为它更快,我在下面引用:**此外,与将这些数据存储在 JS 数据仓库中相比,读取数据属性的性能很差。使用数据集甚至比使用 getAttribute() 读取数据还要慢。** -链接
2021-04-09 02:41:24