jQuery 的 data() 函数似乎无法正常工作。
jQuery's data() function does not seem to be working right.
之前我一直在做:
我的HTML:
<span id="foo" data-foo-bar="42">The Answer</span>
我的"jquery":
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
我该如何解决这个问题?
发生了什么变化?
改变的是现在有 breaking change: .data() names containing dashes
这意味着您尝试过的方法将不再有效!
你能做的是:
const fooElement = $('#foo');
const fooBar = fooElement.data('fooBar'); // 42
// or
const fBar = fooElement.data()['fooBar']; // 42
这是因为jquery现在驼峰式所有"kebab-case"(jquery的词不是我的)数据属性。
您可以使用(如果需要)是实际的数据属性:
const fooElement = document.getElementById('foo');
const fooBar = fooElement.getAttribute('data-foo-bar'); // 42
如果您想了解有关 DOM 属性与 DOM 属性的更多信息,您可以阅读 this。
之前我一直在做:
我的HTML:
<span id="foo" data-foo-bar="42">The Answer</span>
我的"jquery":
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
我该如何解决这个问题?
发生了什么变化?
改变的是现在有 breaking change: .data() names containing dashes
这意味着您尝试过的方法将不再有效!
你能做的是:
const fooElement = $('#foo');
const fooBar = fooElement.data('fooBar'); // 42
// or
const fBar = fooElement.data()['fooBar']; // 42
这是因为jquery现在驼峰式所有"kebab-case"(jquery的词不是我的)数据属性。
您可以使用(如果需要)是实际的数据属性:
const fooElement = document.getElementById('foo');
const fooBar = fooElement.getAttribute('data-foo-bar'); // 42
如果您想了解有关 DOM 属性与 DOM 属性的更多信息,您可以阅读 this。