Несколько динамических селекторов в jQuery с использованием переменных - PullRequest
2 голосов
/ 31 октября 2011

При использовании одного динамического селектора у меня нет проблем:

var answer_id = <?php echo $answer_id; ?>;

$('#a_flag_' + answer_id).click(function(e) {
        e.preventDefault();

         //Ajax etc...

Но если я добавлю несколько динамических селекторов, они не будут работать (то есть, никаких ошибок в консоли Firebug, но также и никаких действий при нажатии):

var answer_id = <?php echo $answer_id; ?>;

$('#a_flag_' + answer_id,'#a_comments_link_' + answer_id,'#a_best_answer_' + answer_id).click(function(e) {
        e.preventDefault();

         //Ajax etc...

Есть идеи, что я делаю не так?

Ответы [ 3 ]

4 голосов
/ 31 октября 2011

Вам нужны запятые внутри указанных константных строк.

$('#a_flag_' + answer_id + ', #a_comments_link_' + answer_id + ',  #a_best_answer_' + answer_id).click(// ///

В итоге вы хотите получить строку, которая выглядит как

"selector, selector, selector, ..."

так что вам нужно объединить кучу строк с запятыми.

В качестве альтернативы, вы можете создать отдельные селекторы в массиве строк и затем ".join ()" их с разделителем запятых (параметр ".join ()").

1 голос
/ 31 октября 2011

Когда это начинает выглядеть слишком сложно, это, вероятно, так. FWIW:

var selectors = [
  '#a_flag_' + answer_id,
  '#a_comments_link_' + answer_id
  // etc.
]
$(selectors.join(", ")).click(...)

Удачного кодирования.

1 голос
/ 31 октября 2011

Вы должны поместить кому в строку, а не снаружи, и вы забыли плюс.

$('#a_flag_' + answer_id + ', #a_comments_link_' + answer_id +',#a_best_answer_' + answer_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...