2010-10-15 3 views
0

У меня есть переменная, значение которой совпадает с идентификатором на странице. Когда я это делаю:Создание селектора с литералами и переменными?

var foo = 'value'; 
$('#' + foo).thing(); 

не работает. Но это работает:

var foo = 'value'; 
var bar = '#' + foo; //'#value'; 
$(bar).thing(); 

Как я могу построить этот селектор в одной строке? Создание дополнительных одноразовых переменных кажется расточительным.

+2

Это должно сработать. Можете ли вы опубликовать свой фактический код? – hookedonwinter

+0

Доказательство концепции: http://jsfiddle.net/JVxRX/ – hookedonwinter

+1

@hooked is right - something * outside * вопрос влияет на это, если он не работает. –

ответ

1

Ошибка пользователя - у меня была переменная (@) в переменных (работа с твиттером), поэтому полученный ID был «# @ value», который является незаконным из-за @. Исправлено это, и теперь он работает.

0

Хммм. У меня никогда не было проблемы. Но, возможно, вы можете попробовать добавить еще один набор скобок вокруг своего внутреннего оператора:

$(("#" + foo)).something();

Если им не отключение, это может заставить JavaScript сначала «вычислить» внутренние скобки, прежде чем передавать его в функцию селектора jQuery. Goog luck ...

+0

Нет ... на самом деле я просто протестировал его, и он отлично работает, чтобы динамически генерировать селекторную строку. Убедитесь, что вы указали переменную, удерживающую строку селектора, если вы используете неправильное имя, JavaScript просто создаст новую пустую строку и попытается использовать ее как предполагаемую переменную, которая, очевидно, потерпит неудачу. Если вы скопируете свой код, я посмотрю ... – joshuafreelance

Смежные вопросы