2013-04-25 1 views
2
다음과 같이 일반적인 입력으로

하지 않습니다에 ... 나는 오류 가지고 왜 내 기능에jQuery를위한 ...를 toUpperCase 함수

<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()은 기능이 아닙니다.

필요한 것은 대문자로 모든 데이터 값을 가져 오는 것입니다.

+3

숫자는 대문자입니까? – undefined

+0

계속 진행하기 전에'$ (this) .data ('value')'응답을 확인 했습니까? – Sampson

+0

데이터를 가져 왔는데 .toUpperCase()를 제거해도 오류가 없습니다. – Gian

답변

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); 
+0

당신이 맞습니다 !! @ 로스. – Gian

3

data-value='1' 속성에 대한 data 방법은 숫자를 반환하고 Number 객체가 data-* 속성이 모두 숫자와 숫자가 아닌 값을 포함한다고 가정 toUpperCase 방법을 가지고 있지 않으며, 당신은 숫자가 아닌 값을 대문자로 변환 할 때문이다, 대신 문자열을 반환하는 attr 메서드를 사용할 수 있습니다.

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

http://jsfiddle.net/B8FRE/

data-* 속성은 요소의 dataset 속성에 매핑되고 특성과 소자의 특성 차이가 존재하는 한 이런

.

관련 문제