2013-05-15 3 views
30

Допустим, у меня есть это:HTML «данных-» атрибут в качестве параметра яваскрипта

<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/


Хотя я хотел бы предложить только проездом this к fun(), и получение 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()'. –

Смежные вопросы