2

典型输入如下...

<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()不是函数吗?

我需要的是以大写形式获取所有数据值。

4

2 回答 2

5

从返回的值this $(this).data('value')是类型number。IE:

console.log(typeof $(this).data('value'));

您首先需要检查它是否为 a number,并将其转换为 a 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);
于 2013-04-25T07:35:03.463 回答
3

那是因为属性的data方法data-value='1'返回一个数字,而 Number 对象没有toUpperCase方法,假设您的data-*属性同时包含数字和非数字值并且您想将非数字值转换为大写,您可以使用attr方法而不是返回一个细绳。

$(this).attr('data-value').toUpperCase();

http://jsfiddle.net/B8FRE/

发生这种情况是因为data-*属性映射到元素的dataset属性,并且元素的属性和属性之间存在差异。

于 2013-04-25T07:33:35.307 回答