views:

3218

answers:

7

For example, the following selects a division with id="2":

row = $("body").find("#2");

How do I do something like this:

row_id = 5;
row = $("body").find(row_id);

The above syntax produces an error. I checked the jQuery documentation and answers here without success.

+5  A: 
row = $("body").find("#" + row_id);
ionut bizau
A: 

I don't know much about jQuery, but try this:

row_id = "#5";
row = $("body").find(row_id);

Edit: Of course, if the variable is a number, you have to add "#" to the front:

row_id = 5
row = $("body").find("#"+row_id);
Zifre
+2  A: 

Write it like this:

row_id = 5;
row = $("body").find('#'+row_id);
Amr ElGarhy
+4  A: 
row = $("body").find('#' + row_id);
Rick Hochstetler
That's it! Thanks!
Tony
A: 

There are two problems with your code

  1. To find an element by ID you must prefix it with a "#"
  2. You are attempting to pass a Number to the find function when a String is required (passing "#" + 5 would fix this as it would convert the 5 to a "5" first)
Bert Lamb
+5  A: 

The shortest way would be:

$("#" + row_id)

Limiting the search to the body doesn't have any benefit.

Also, you should consider renaming your ids to something more meaningful, especially if you have another set of data that needs to be named also. You want your ids to be unique, and naming them with only numbers might make that difficult in the future if you have to add another table, list, or any other element.

John Rasch
Good point - thanks for clarifying this.
Tony
+11  A: 

Doing $('body').find(); is not necessary when looking up by ID; there is no performance gain.

Please also note that having an ID that starts with a number is not valid HTML:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

Paolo Bergantino
Got it. I'm going to look into changing the ID format.
Tony
p_1 for standards compliance!
John Rasch