jquery不能获取数据属性值
我想在jQuery中设置一个variables。 该值应该设置在button的单击事件上。  onclick事件触发,但x10Devicevariables保持undefined 。 
我在jQuery 1.7.1。
jQuery的:
  $x10Device = $(this).data("X10"); 
HTML:
 <button class="toggleStatus" data-X10="C5"> 
我看不出有什么问题。
  jQuery的data()方法将使您可以访问data-*属性,但是,它会破坏属性名称的大小写。 你可以使用这个: 
 $('#myButton').data("x10") // note the lower case 
 或者,你可以使用attr()方法,它保留你的情况: 
 $('#myButton').attr("data-X10") 
试试这两种方法: http : //jsfiddle.net/q5rbL/
 请注意,这些方法并不完全等效。 如果你要改变一个元素的data-*属性,你应该使用attr() 。  data()会在最初读取一次值,然后继续返回一个caching副本,而attr()将每次重新读取该属性。 
 注意,jQuery也会将属性名称中的连字符转换为骆驼大小写( source –  ie data-some-data == $(ele).data('someData') )。 这两种转换都符合HTML规范,该规范规定自定义数据属性不应包含大写字母,连字符将在dataset属性( 源 )中驼峰化。  jQuery的data方法只是模仿/符合这个标准的行为。 
文档
-   data– http://api.jquery.com/data/
-   attr– http://api.jquery.com/attr/
- HTML语义和结构,自定义数据属性 – http://www.w3.org/html/wg/drafts/html/master/dom.html#custom-data-attribute
Iyap。 它的工作在数据名称data-x10中区分大小写
 var variable = $('#myButton').data("x10");  //我们获得自定义数据属性的值 
使用普通的javascript方法
 $x10Device = this.dataset("x10"); 
将套pipe更换为所有的小箱子。
 确保检查与点击button相关的事件是否不作为button内的图标标签( <i class="fa... )传播到子元素,例如 ,所以这种传播可以让你错过button$(this).attr('data-X10')并点击图标标签。 
 <button data-x10="C5"> <i class="fa fa-check"></i> Text </button> $('button.toggleStatus').on('click', function (event) { event.preventDefault(); event.stopPropagation(); $(event.currentTarget).attr('data-X10'); }); 
您可以根据需要更改select器和数据属性!
  <select id="selectVehicle"> <option value="1" data-year="2011">Mazda</option> <option value="2" data-year="2015">Honda</option> <option value="3" data-year="2008">Mercedes</option> <option value="4" data-year="2005">Toyota</option> </select> $("#selectVehicle").change(function () { alert($(this).find(':selected').data("year")); }); 
这里是工作的例子: https : //jsfiddle.net/ed5axgvk/1/