2013-05-15 36 views
30

phép nói rằng tôi có điều này:html "đĩa dữ liệu" thuộc tính như javascript tham số

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

Và đây:

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

Vâng điều này là không làm việc nhưng tôi hoàn toàn không có ý tưởng tại sao. ai đó có thể đăng một ví dụ làm việc xin vui lòng?

Trả lời

55

Cách dễ nhất để có được data-* thuộc tính là với element.getAttribute():

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

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


Mặc dù tôi sẽ đề nghị chỉ đi this để fun(), và nhận được 3 thuộc tính bên trong chức năng fun:

onclick="fun(this);" 

Và sau đó:

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/


Cách mới để truy cập chúng bằng tài sản là với dataset, nhưng đó không phải được hỗ trợ bởi tất cả các trình duyệt . Bạn sẽ nhận được chúng như sau:

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

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


Cũng lưu ý rằng trong HTML của bạn, không nên có dấu phẩy ở đây:

data-name="bbb", 

Tài liệu tham khảo:

+1

@lan Vượt qua "điều này" là cách tốt hơn. Cảm ơn bạn. – Werner

+0

@ user2206656 Đồng ý :) Tôi đã thêm (rất đơn giản) bản trình diễn cho từng kịch bản, vì vậy hy vọng điều đó cũng hữu ích! – Ian

+0

Hey, điều này có thể hơi trễ một chút, nhưng có cách nào đó để kích hoạt chức năng mà không có 'onclick' mà đúng hơn là 'onload' không? –

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'); 
} 

nhưng tôi đang sử dụng jQuery.

+7

Danh mục được đề cập rõ ràng là Javascript. – harishannam

+1

+ có phương thức '.data()' trong jquery. –

Các vấn đề liên quan