2010-02-03 2 views
17

jQuery 응용 프로그램에서 "잡히지 않은 예외 : 구문 오류, 인식 할 수없는 표현 :)"이 있습니다. ("P : (포함"+ vtxt +를 ")") $ : A는 포함에 내가 변수 vtxt을 추가 할 때jQuery에는 변수 구문이 포함되어 있습니다.

<script> 
    $(document).ready(function(){      
     $('.drag').click(function() { 
      $('.drag').each(function(i) { 
       $(this).addClass('test' + i) 
      }); 

      var vtxt = $(this).text(); 
      $("p").removeClass("on"); 
      $("p:contains("+ vtxt +")").addClass("on"); 

     }); 
    }); 

문제는 다음과 같습니다

코드입니다. addClass ("on");

여러 개의 인용 부호를 시도했지만 작동하지 않습니다. 포함에 변수를 추가하는 올바른 구문은 무엇입니까?

$("p:contains('" + vtxt + "')").addClass("on"); 
+1

'vtxt'의 값은 무엇입니까? 대괄호를 포함 할 수 있습니다. –

+0

이것은 jQuery 자체와 관련이 없습니다. 구문 상 올바르지 않은 contains()에 대한 JavaScript 입력입니다. :) – bzlm

답변

40

이 시도해보십시오.
가 나는 를 작동 $("p:contains('" + valor + "')").addClass("on");를 사용하는 경우 "

'의 사용을 방지 할 수 있습니다.

그러나 $('p:contains('" + valor + "')**'**).addClass("on")을 사용하는 경우 이 아닙니다!

+0

vtxt에는 대괄호가 없습니다. 앤드류의 응답으로 유효한 구문이 생겼습니다. 이제 작동합니다. 감사합니다. – Mircea

+0

** '** 또는 **'** 문자가 포함되어 있으면 vtxt 내용이 실패 할 수 있으므로 vtxt 내용을 이스케이프 처리하십시오. –

+0

vtxt를 이스케이프 처리하는 방법 – Mircea

1

나는 비슷한 문제를 해결하기 위해이 답변을 사용하고 있습니다 :

4

이전 질문이지만 차세대 노트를 남겨 두어야합니다. 앤드류의 대답 (받아 들인 대답)은 나를 위해 일하지 않았다. 무슨 했나요 작품은 선택기로 미리 만든 문자열을 사용하고있었습니다. 영업 예를 빌리십시오 :

var selector = "p:contains("+ vtxt +")"; 
$(selector).addClass("on"); 
관련 문제