jquery无法获取数据属性值

Jas*_*ton 60 jquery html5

我试图在jQuery中设置一个变量.该值应该在按钮的单击事件上设置.触发onclick事件但x10Device变量仍然存在undefined.

我在jquery 1.7.1.

jQuery的:

 $x10Device = $(this).data("X10");
Run Code Online (Sandbox Code Playgroud)

HTML:

<button class="toggleStatus" data-X10="C5">
Run Code Online (Sandbox Code Playgroud)

我看不出有什么不对.

Chr*_*ker 126

jQuery的data()方法将为您提供对data-*属性的访问,但是,它会破坏属性名称的情况.你可以使用这个:

$('#myButton').data("x10") // note the lower case
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用attr()保留案例的方法:

$('#myButton').attr("data-X10")
Run Code Online (Sandbox Code Playgroud)

在这里尝试两种方法:http://jsfiddle.net/q5rbL/

请注意,这些方法并不完全等效.如果要更改data-*元素的属性,则应使用attr().data()将在最初读取该值,然后继续返回缓存副本,而attr()每次都将重新读取该属性.

请注意,jQuery还会将属性名称中的连字符转换为camel case(source - ie data-some-data == $(ele).data('someData')).这两个转换都符合HTML规范,该规范规定自定义数据属性不应包含大写字母,并且连字符将在dataset属性()中加入驼峰.jQuery的data方法仅仅是模仿/符合这个标准行为.

文档

  • 关于数据属性的区分大小写的好信息,+ 1 (2认同)
  • 还有.data(),当你使用像$(this).data("giveMeMyBananas")这样的Camel Case时,它将检索data-give-me-my-bananas的"html"数据="NO!" (2认同)