2013-03-20 53 views
5

为什么使用变量:contains()不起作用?有什么办法可以使它工作吗? filter('contains()')也没有工作。jquery:包含使用变量的选择器

<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:看到答案在这里:http://stackoverflow.com/questions/2191419/jquery-contains-with-a-variable-syntax – gongzhitaao 2013-03-20 19:20:29

+0

与文本节点无关,JS不解析字符串内的变量(看起来像你可能会用到PHP?)您必须使用'$('div:contains('+ $ modele +')')。css('background','yellow');' – Adrian 2013-03-20 19:20:48

+0

非常感谢! – veksen 2013-03-20 20:06:56

回答

5

与PHP不同,Javascript不支持字符串插值。

如果要在字符串中使用变量,则必须使用运算符连接并使用

11

选择器不使用Javascript变量。你必须把值从变量的选择字符串:

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

在@Slaks陈述回答您需要连接。

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

这里是它的小提琴。

http://jsfiddle.net/CMKsF/

1

你需要把它作为字符串..所以串连使用+运营商"了var ..所以,它把它作为字符串

试试这个

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

它只是一个级联问题:

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