2013-05-15 41 views
30

可以说我有这样的:HTML“数据 - ”属性,如JavaScript参数

<div data-uid="aaa" data-name="bbb", data-value="ccc" onclick="fun(this.data.uid, this.data-name, this.data-value)"> 

这:

function fun(one, two, three) { 
    //some code 
} 

嗯,这是行不通的,但我完全不知道为什么。有人可以发布一个工作示例吗?

回答

55

得到data-*属性最简单的方法是element.getAttribute()

onclick="fun(this.getAttribute('data-uid'), this.getAttribute('data-name'), this.getAttribute('data-value'));" 

DEMO:http://jsfiddle.net/pm6cH/


虽然我建议刚好路过thisfun(),并获得3个属性里面fun功能:

onclick="fun(this);" 

然后:

function fun(obj) { 
    var one = obj.getAttribute('data-uid'), 
     two = obj.getAttribute('data-name'), 
     three = obj.getAttribute('data-value'); 
} 

DEMO:http://jsfiddle.net/pm6cH/1/


通过属性来访问他们的新方法是用dataset,但并非所有浏览器都支持。你会得到他们这样的:

this.dataset.uid 
// and 
this.dataset.name 
// and 
this.dataset.value 

DEMO:http://jsfiddle.net/pm6cH/2/


还要注意,在你的HTML,不应该有一个逗号在这里:

data-name="bbb", 

个参考文献:

+1

@lan通过“这个”更好。谢谢。 – Werner

+0

@ user2206656同意:)我为每个场景添加(非常简单)演示,所以希望这也能起到帮助作用! – Ian

+0

嘿,这可能有点晚了,但有没有一种方法来触发该功能,而不是'onclick',而是像'onload'? –

1

HTML:

<div data-uid="aaa" data-name="bbb", data-value="ccc" onclick="fun(this)"> 

的JavaScript:

function fun(obj) { 
    var uid= $(obj).attr('data-uid'); 
    var name= $(obj).attr('data-name'); 
    var value= $(obj).attr('data-value'); 
} 

,但我使用jQuery。

+7

提到的类别显然是Javascript。 – harishannam

+1

+ jquery中有'.data()'方法。 –