views:

512

answers:

1

Hello,

I have an "uncaught exception: Syntax error, unrecognized expression: )" in a jQuery application.

The code is:

<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");

       });
    });

The problem is when I add the variable vtxt to a contains: $("p:contains("+ vtxt +")").addClass("on");

I've tried several quotes but it just does not work. What is the right syntax for adding a variable to a contains?

Thank you.

+4  A: 

Try this:

$("p:contains('" + vtxt + "')").addClass("on");
Andrew Hare
vtxt does not contains brackets.Andrew's response gave me a valid syntax, it works now.Thank you!
Mircea
make sure you you escape the vtxt contents as it will fail if it ever contains the **'** or **"** character ..
Gaby
How should I escape the vtxt?
Mircea
With backslashes. Or just loop over all `p` elements filtering for `p.text().indexOf(vtxt)!==1`. This avoids the escaping issue and is no slower than the selector version, since it's a non-standard selector jQuery has to implement in the same sort of way itself.
bobince
If this answer is fit your needs you can accept it, isn't it?
NilColor
Yes, thank you for your support. I am new to jQuery and still learning the basics.Thank you.
Mircea