如何通过使用ID变量来选择jQuery中的元素?


100

例如,以下代码选择id =“ 2”的除法:

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

我该怎么做:

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

上面的语法会产生错误。我检查了jQuery文档并在这里回答不成功。


6
哇,五个答案完全一样...
Zifre

Answers:


189
row = $("body").find('#' + row_id);

更重要的是,执行额外的body.find对性能没有影响。正确的方法是:

row = $('#' + row_id);

46

最短的方法是:

$("#" + row_id)

将搜索限制在身体上没有任何好处。

另外,您应该考虑将ids 重命名为更有意义的名称(并根据Paolo的回答兼容HTML),尤其是在您还需要命名另一组数据的情况下。


我喜欢简洁。我刚刚将其与qTip2工具提示一起使用,效果很好。我有点好奇,由于响应用户输入而生成大量这些“及时”的性能会降低多少?
PJ Brunet

26

$('body').find();通过ID查找时不必这样做;没有性能提升。

另请注意,具有以数字开头的ID 无效的HTML

ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。



1

您的代码有两个问题

  1. 要通过ID查找元素,您必须在其前面加上“#”
  2. 您正在尝试在需要字符串时将数字传递给find函数(传递“#” + 5将解决此问题,因为它将首先将5转换为“ 5”)

0

我对jQuery不太了解,但是请尝试以下操作:

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

编辑:当然,如果变量是数字,则必须添加"#"到前面:

row_id = 5
row = $("body").find("#"+row_id);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.