首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用html "data-“属性

使用html "data-“属性
EN

Stack Overflow用户
提问于 2013-07-19 23:27:03
回答 4查看 1.3K关注 0票数 7

考虑下面这样的一行:

代码语言:javascript
复制
<div id='abc' onclick='DoSomething(this.id)'></div>

现在,假设它被扩展为更像这样的东西:

代码语言:javascript
复制
<div id='abc' data-something='whatever' onclick='DoSomething(this.id)'></div>

这里还没有功能上的区别,但这是我的问题。我正在寻找一种方法,将“data-something”的值传递给DoSomething函数,而不是id。我似乎找不到这样做的方法?有可能吗?

类似下面的代码会很好,但当然不是这样的。(我将其包括在内只是为了帮助说明预期的目标。

代码语言:javascript
复制
<div id='abc' data-something='whatever' onclick='DoSomething(this.data-something)'></div>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-19 23:28:46

您应该能够执行this.getAttribute("data-something"),如下所示:

代码语言:javascript
复制
<div id='abc' data-something='whatever' onclick='DoSomething(this.getAttribute("data-something"))></div>

或者,您可以使用this.dataset.something

Here is my source

票数 5
EN

Stack Overflow用户

发布于 2013-07-19 23:28:22

你可以做到

代码语言:javascript
复制
DoSomething(this.dataset.something)

但通常建议将javascript部分和HTML分开,当您的元素具有id时,这尤其容易:

代码语言:javascript
复制
<div id='abc' data-something='whatever'></div>
<script>
    document.getElementById('abc').onclick = function(){
        DoSomething(this.dataset.something)
    }
</script>

在On浏览器上,support for dataset is incomplete。在IE10-上,您需要使用

代码语言:javascript
复制
DoSomething(this.getAttribute('data-something'))
票数 10
EN

Stack Overflow用户

发布于 2013-07-19 23:30:11

您应该使用getAttribute方法:

代码语言:javascript
复制
<div id='abc' data-something='whatever' onclick='DoSomething(this.getAttribute("data-something")'></div>

但我强烈建议您避免使用javascript对元素进行内联委托。为此,您最好使用DOM或jQuery,请注意,jQuery有一种更容易处理数据的方法--*属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17749860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档