채택완료

제이쿼리 $.inArray 질문입니다.

Copy
<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개 / 댓글 1개

채택된 답변
+20 포인트

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')

답변에 대한 댓글 1개

자세한 답변 감사합니다.. 좋은거 배우고갑니다..

답변을 작성하려면 로그인이 필요합니다.