2013-03-20 2 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

+0

Не имеет ничего общего с текстовыми узлами, JS не анализирует переменные внутри строк (выглядит так, как вы может использоваться для PHP?) Вам нужно будет использовать '$ ('div: contains (' + $ modele + ')'). css ('background', 'yellow');' – Adrian

+0

Большое вам спасибо! – veksen

ответ

5

В отличие от PHP, Javascript не поддерживает строчную интерполяцию.

Если вы хотите использовать переменную внутри строки, вы должны объединить с помощью оператора +.

11

Селекторы не используют переменные Javascript. Вы должны поместить значение из переменной в строке селектора:

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

, как указано в @Slaks ответить вам нужно сцепить.

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

вот скрипка.

http://jsfiddle.net/CMKsF/

1

вам нужно передать его как строку .. так сцепить вар с " помощью + оператора .. так, что он принимает его как строку

попробовать этот

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

это только вопрос о конкатенации:

$('div:contains(' + $modele + ')').css('background','yellow'); 
Смежные вопросы