Mircea
Mircea

Reputation: 11593

jQuery contains() with a variable syntax

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?

Upvotes: 30

Views: 46022

Answers (3)

Nelo Mitranim
Nelo Mitranim

Reputation: 854

Old question, but I must leave a note for future generations. Andrew's answer (the accepted one) didn't work for me. What did work was using a pre-made string as selector. Borrowing OP's examples:

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

Upvotes: 9

combuilder
combuilder

Reputation: 93

I have used this answer in order to solve a similar problem.
I want to prevent the use of " and '

When using $("p:contains('" + valor + "')").addClass("on");, it works.

But when using $('p:contains('" + valor + "')**'**).addClass("on"), it does not!

Upvotes: 3

Andrew Hare
Andrew Hare

Reputation: 351466

Try this:

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

Upvotes: 60

Related Questions