개발 저장소/개발 지식 저장소

[Jquery] 선택자(Selector)에 특수기호 넣기

이거비버 2023. 1. 6. 11:40
반응형

차량 센서 모니터링 웹플랫폼을 개발하면서 테이블 td의 id를 차량의 코드에따라 달라지게 자동화를 해놨다.

이 id를 이용해서 검색을 하거나 for문으로 데이터 일부만 갱신하게 만들어놨다.

td의 id와 json의 코드를 비교해서 같을 때 해당 데이터를 갱신해주는 방식이다.

 

예를 들면

차량 코드 : Tractor1
td id : Tractor1
td.id.innerHtml = json.데이터;

와 같은 방식으로 데이터를 갱신한다.

지금까지는 차량 코드가 영문과 숫자로 조합되었지만 고객 요청으로 차량 코드번호 앞에  '[number]'를 붙여줬다.

 

ex: [3]Tractor2

** [number]는 db에서 들어오는 index 값.

 

요청대로 테이블에 [number]를 추가했다.

 

그런데 Interval로 설정한 데이터 갱신이 되지 않는다.

개발자툴을 들어가서 보니 에러 발생.

 

갑자기 속성이 정의되지 않았다고 나온다.

console.log를 찍어보니 아래와 같이 [0]으로 선택자의 데이터가 들어와야 하는데 들어오지 않고 있다.

내가 무엇을 빠뜨렸나? 고민하다가

변화를 준 부분인 '[number]'에서 문제가 발생했으니 거기서 원인을 찾아보기로 했다.

'혹시 제이쿼리 선택자에는 특수문자가 들어가면 안 되는건가?'

 

찾아보니 그렇단다..!

구글링한 블로그에서는 친절하게도 해결 방법까지 제시해줬다.

특수문자 앞에 \\를 붙이면 된단다.

 

modelNo = modelNo.split("[").join("\\[");
modelNo = modelNo.split("]").join("\\]");

 

그래서 '[' 와 ']' 앞에 '\\'를 붙였다.

 

결과는 아래[0]와 같이 잘 들어온다.

 

반응형