제이쿼리 $.inArray 질문입니다.
본문
<span class="test" data-val="1"></span>
<script>
$('.test').click(function () {
var data_value = $(this).attr('data-val'); // 1
var arr = [1,2,3];
if ($.inArray(data_value, arr) != -1) {
alert('배열에 속해있음');
} else {
alert('no');
}
});
</script>
제이쿼리 inarray 이렇게 쓰는게 아닌가요??
attr로 값가져와서 하면 else 구문을 타고
var data_value = 1;
이렇게 주고하면 작동이 잘되는데..
뭐가 잘못된건지 모르겠습니다..
!-->
답변 1
data-value 는 "1" 문자열이고,
arr 의 각 요소 1, 2, 3 은 숫자형이라 그렇습니다.
var data_value = $(this).attr('data-val');
->
var data_value = parseInt($(this).attr('data-val'), 10);
으로 해주면 됩니다.
추가로 data-val 의 값은,
attr() 로 가져오는 것보다는 data() 로 가져오는 것이 더 좋습니다. https://www.broken-links.com/2010/11/18/data-attributes-in-html-and-jquery/
$(this).attr('data-val')
->
$(this).data('val')
답변을 작성하시기 전에 로그인 해주세요.