2010-02-03 85 views
17

我有一個「未捕獲的異常:語法錯誤,無法識別的表達式:)」在jQuery應用程序中。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"); 

     }); 
    }); 

問題是,當我添加變量vtxt到包含: $( 「P:包含(」 + vtxt + 「)」)。 addClass( 「上」);

我試過幾個引號,但它不起作用。 向變量添加變量的正確語法是什麼?

+1

'vtxt'的價值是什麼。它可能包含括號。 – 2010-02-03 11:23:07

+0

這本身不是jQuery相關的。這是包含()的語法錯誤的JavaScript輸入。 :) – bzlm 2010-02-03 11:33:57

回答

40

試試這個:

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

vtxt不包含括號。 Andrew的回覆給了我一個有效的語法,它現在起作用。 謝謝! – Mircea 2010-02-03 11:29:55

+0

請確保您轉義了vtxt內容,因爲如果它包含**'**或**「**字符,它將會失敗。 – 2010-02-03 11:37:03

+0

我應該如何轉義vtxt? – Mircea 2010-02-03 11:41:41

1

我已經爲了解決類似的問題,用這個答案。
我想,以防止使用的"'

當使用$("p:contains('" + valor + "')").addClass("on");,它工作

但是當使用$('p:contains('" + valor + "')**'**).addClass("on")時,它不是

4

老問題,但我必須留給子孫後代。安德魯的答案(接受的答案)不適合我。 做了什麼工作是使用預先創建的字符串作爲選擇器。借用OP的例子:

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