admin管理员组

文章数量:1023204

Using a single dynamic selector I have no problems:

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

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

         //Ajax etc...

But if I add several dynamic selectors they do not work (ie, no errors on Firebug console, but also no action when clicked):

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

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

         //Ajax etc...

Any ideas what I am doing wrong?

Using a single dynamic selector I have no problems:

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

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

         //Ajax etc...

But if I add several dynamic selectors they do not work (ie, no errors on Firebug console, but also no action when clicked):

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

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

         //Ajax etc...

Any ideas what I am doing wrong?

Share Improve this question asked Oct 30, 2011 at 22:15 pepepepe 9,90925 gold badges117 silver badges192 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 5

You need the mas inside the quoted constant strings.

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

What you want to end up with is a string that looks like

"selector, selector, selector, ..."

so you need to concatenate a bunch of strings with mas.

Alternatively, you could build up your separate selectors in an array of strings and then ".join()" them with a ma separator (the parameter to ".join()").

You should put the a inside the string not outside and you have forgotten the plus.

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

When it starts to look too plicated, it likely is. FWIW:

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

Happy coding.

Using a single dynamic selector I have no problems:

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

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

         //Ajax etc...

But if I add several dynamic selectors they do not work (ie, no errors on Firebug console, but also no action when clicked):

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

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

         //Ajax etc...

Any ideas what I am doing wrong?

Using a single dynamic selector I have no problems:

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

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

         //Ajax etc...

But if I add several dynamic selectors they do not work (ie, no errors on Firebug console, but also no action when clicked):

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

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

         //Ajax etc...

Any ideas what I am doing wrong?

Share Improve this question asked Oct 30, 2011 at 22:15 pepepepe 9,90925 gold badges117 silver badges192 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 5

You need the mas inside the quoted constant strings.

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

What you want to end up with is a string that looks like

"selector, selector, selector, ..."

so you need to concatenate a bunch of strings with mas.

Alternatively, you could build up your separate selectors in an array of strings and then ".join()" them with a ma separator (the parameter to ".join()").

You should put the a inside the string not outside and you have forgotten the plus.

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

When it starts to look too plicated, it likely is. FWIW:

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

Happy coding.

本文标签: javascriptMultiple dynamic selectors in jQuery using variablesStack Overflow