jQuery中的多个动态选择器使用变量

时间:2011-10-30 22:15:41

标签: javascript jquery dynamic jquery-selectors

使用单个动态选择器我没有问题:

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 个答案:

答案 0 :(得分:4)

你需要逗号内部引用的常量字符串。

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

您最终想要的是一个看起来像

的字符串
"selector, selector, selector, ..."

所以你需要用逗号连接一堆字符串。

或者,您可以在字符串数组中构建单独的选择器,然后使用逗号分隔符(“.join()”的参数“.join()”。

答案 1 :(得分:1)

你应该把逗号放在字符串里面而不是外面,你忘记了加号。

$('#a_flag_' + answer_id + ', #a_comments_link_' + answer_id +',#a_best_answer_' + answer_id)

答案 2 :(得分:1)

当它开始看起来太复杂时,很可能是。 FWIW:

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

快乐的编码。