jQuery的data()函数似乎没有正常工作。

时间:2016-06-14 14:26:46

标签: javascript jquery jquery-3

以前我一直在做:

我的HTML:

<span id="foo" data-foo-bar="42">The Answer</span>

我的&#34; jquery&#34;:

const fooElement = $('#foo');
const fooBar = fooElement.data('foo-bar'); // 42
// or
const fBar = fooElement.data()['foo-bar']; // 42

但是在我升级jquery(到3.0)之后我得到了这个:

const fooElement = $('#foo');
const fooBar = fooElement.data('foo-bar'); // undefined
// or
const fBar = fooElement.data()['foo-bar']; // undefined

我该如何解决这个问题?

改变了什么?

1 个答案:

答案 0 :(得分:4)

现在有一个breaking change: .data() names containing dashes

,改变了

这意味着您尝试的内容将不再有效

你可以做的是:

const fooElement = $('#foo');
const fooBar = fooElement.data('fooBar'); // 42
// or
const fBar = fooElement.data()['fooBar']; // 42

这是因为jquery现在所有的&#34; kebab-case&#34; (jquery&#39; s word not mine)数据属性。

您可以使用的(如果需要)是实际的数据属性:

const fooElement = document.getElementById('foo');
const fooBar = fooElement.getAttribute('data-foo-bar');  // 42

如果您想了解有关DOM属性与DOM属性的更多信息,请阅读this