2010-02-03 29 views
17

Tôi có một "ngoại lệ không bị bắt buộc: Lỗi cú pháp, biểu thức không được công nhận:)" trong một ứng dụng jQuery.jQuery chứa() với một cú pháp biến

Mã này là:

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

     }); 
    }); 

Vấn đề là khi tôi thêm các vtxt biến để một chứa: $ ("p: chứa (" + vtxt + ")"). addClass ("on");

Tôi đã thử một vài trích dẫn nhưng nó không hoạt động. Cú pháp đúng để thêm biến vào một vùng chứa là gì?

+1

Giá trị của 'vtxt' là gì. Nó có thể chứa dấu ngoặc vuông. –

+0

Đây không phải là liên quan đến jQuery. Đó là đầu vào JavaScript của bạn để chứa() vốn không chính xác về cú pháp. :) – bzlm

Trả lời

40

Hãy thử điều này:

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

vtxt không chứa dấu ngoặc vuông. Câu trả lời của Andrew cho tôi một cú pháp hợp lệ, nó hoạt động ngay bây giờ. Cảm ơn bạn! – Mircea

+0

đảm bảo bạn thoát khỏi nội dung vtxt vì nó sẽ thất bại nếu nó chứa ký tự ** '** hoặc ** ** ** .. –

+0

Làm cách nào để thoát khỏi vtxt? – Mircea

1

Tôi đã sử dụng câu trả lời này để giải quyết một vấn đề tương tự.
tôi muốn ngăn chặn việc sử dụng các "'

Khi sử dụng $("p:contains('" + valor + "')").addClass("on");, nó làm việc.

Nhưng khi sử dụng $('p:contains('" + valor + "')**'**).addClass("on"), nó không!

4

Câu hỏi cũ, nhưng tôi phải để lại ghi chú cho các thế hệ tương lai. Câu trả lời của Andrew (câu trả lời) không có tác dụng với tôi. Điều gì đã làm công việc đã sử dụng chuỗi được tạo sẵn làm công cụ chọn. Mượn ví dụ của OP:

var selector = "p:contains("+ vtxt +")"; 
$(selector).addClass("on"); 
Các vấn đề liên quan