How do I select an element in jQuery by using a variable for the ID?

前端 未结 6 869
野的像风
野的像风 2021-01-30 03:59

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

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

How do I do something like this:

r         


        
相关标签:
6条回答
  • 2021-01-30 04:09

    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 (".").

    0 讨论(0)
  • 2021-01-30 04:09

    You can do it like this:

    row_id = 5;
    row = $("body").find('#'+row_id);
    
    0 讨论(0)
  • 2021-01-30 04:10
    row = $("body").find('#' + row_id);
    

    More importantly doing the additional body.find has no impact on performance. The proper way to do this is simply:

    row = $('#' + row_id);
    
    0 讨论(0)
  • 2021-01-30 04:14

    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);
    
    0 讨论(0)
  • 2021-01-30 04:15

    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 (and HTML compliant as per Paolo's answer), especially if you have another set of data that needs to be named as well.

    0 讨论(0)
  • 2021-01-30 04:16

    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)
    0 讨论(0)
提交回复
热议问题