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方法只是模仿/符合这个标准的行为。

文档

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/