2013-03-20 22 views
5

Tại sao nó sử dụng biến trong: contains() không hoạt động? Có cách nào để làm cho nó hoạt động không? filter('contains()') cũng không hoạt động.jquery: chứa bộ chọn sử dụng biến số

<h2>Test</h2> 
<div>Test</div> 

var model = $('h2').text(); 
//variable doesn't work 
$('div:contains(model)').css('background','yellow'); 
//obviously, string works 
$('div:contains("Test")').css('background','yellow'); 
+1

Dupl icated: Xem câu trả lời ở đây: http://stackoverflow.com/questions/2191419/jquery-contains-with-a-variable-syntax – gongzhitaao

+0

Không có gì để làm với các nút văn bản, JS không phân tích các biến bên trong các chuỗi (trông giống như bạn có thể được sử dụng cho PHP?) Bạn sẽ phải sử dụng '$ ('div: contains (' + $ modele + ')'). css ('background', 'yellow'); ' – Adrian

+0

cảm ơn bạn rất nhiều! – veksen

Trả lời

5

Không giống như PHP, Javascript không hỗ trợ nội suy chuỗi.

Nếu bạn muốn sử dụng biến trong chuỗi, bạn phải ghép nối bằng toán tử +.

11

Bộ chọn không sử dụng biến Javascript. Bạn phải đặt giá trị từ biến trong chuỗi chọn:

$('div:contains("' + $modele + '")') 
1

như đã nêu trong @Slaks trả lời bạn cần ghép nối.

$('div:contains('+$modele+')').css('background','yellow'); works 

đây là điều thích hợp.

http://jsfiddle.net/CMKsF/

1

bạn cần phải vượt qua nó như là chuỗi .. để nối các var với " sử dụng + điều hành .. để nó mất nó như là chuỗi

thử này

var $modele = $('h2').text(); 
//variable doesn't work 
$('div:contains("'+$modele+'")').css('background','yellow'); 
5

nó chỉ là một vấn đề nối:

$('div:contains(' + $modele + ')').css('background','yellow');