1

我有

<div data-text="This is a text">...</div>

我需要在 javascript 中访问数据文本。它适用于alert($('div').data('text'));但不适用于alert($.data($('div'), 'text'));给我未定义。

为什么?

链接:http: //jsfiddle.net/tvDzP/2/

(对于我element.attr('data-text')用来检索文本的性能问题)

4

2 回答 2

1

通常$.data需要一个 DOM 节点,而不是 jQuery 对象。

$('div').data('text') // correct
$.data($('div')[0], 'text') // correct
$.data($('div'), 'text') // incorrect

但是,对于data-*属性,$.data除非该值已经被$(element).data().

文档

关于 HTML5 data-* 属性:这个低级方法不会检索data-*属性,除非更方便的.data()方法已经检索了它们。

演示

于 2012-08-22T11:26:47.993 回答
0

element必须是 DOM 元素,而不是选择器或 jQuery 对象:

$.data($('div')[0], 'text')

http://jsfiddle.net/CGck6/

于 2012-08-22T11:27:18.710 回答