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/