典型输入如下......
<input type="checkbox" class="actEmail" data-value="1"/>Department one</li>
在我的功能......
var chksDept = $('input[type=checkbox].actEmail:checked');
var depts = Array();
chksDept.each(function() {
depts.push($(this).data('value').toUpperCase());
});
为什么我收到错误:
$(...).data(...).toUpperCase()
不是函数吗?
我需要的是以大写字母获取所有数据值。
答案 0 :(得分:5)
this $(this).data('value')
返回的值属于number
类型。即:
console.log(typeof $(this).data('value'));
您首先需要检查它是否为number
,然后先将其转换为string
。像这样:
var chksDept = $('input[type=checkbox].actEmail:checked');
var depts = Array();
chksDept.each(function() {
var data = $(this).data('value');
if (typeof data === 'number') {
data = ""+data;
}
depts.push(data.toUpperCase());
});
console.log(depts);
答案 1 :(得分:3)
这是因为data
属性的data-value='1'
方法返回一个数字而Number对象没有toUpperCase
方法,假设您的data-*
属性包含数字和非{数值,并且您希望将非数字值转换为大写,您可以使用attr
方法返回一个字符串。
$(this).attr('data-value').toUpperCase();
当data-*
属性映射到元素的dataset
属性并且元素的属性和属性之间存在差异时,就会发生这种情况。