2014-05-22 40 views
-1

我给你很多的id的是这样的:使用其中属性的ID相匹配的jQuery选择

$(".split").each(function(index) { 
     $(this).attr("id", index); 
}); 

再后来在路上我试图选择这样的:

$("#id="+c) 

但引发以下错误:

Error: Syntax error, unrecognized expression: #id=1 

如何选择具有特定数字的ID?

+1

http://api.jquery.com/category/selectors/ – undefined

+0

越位注释是使用数字'id'时,您将无法在CSS中使用id选择器,但在脚本代码中仍然可以使用。 –

+0

请记住,一个有效的'id'不能以(或因此)为数字开头。 – iblamefish

回答

6

你只需要#标志:

$("#" + number); 
1

与此更换ID选择:

$("#" + c)

换句话说,丢弃id=在你的表达,因为正确的方式来选择元素的ID是用一个散列符号(#)作为前缀。

但我建议不要使用数字作为HTML元素的标识 ,因为这是一个无效的CSS选择器。 我的建议是在它前面添加一个有效的标识符,以便更好地理解呈现的HTML,假设您从服务中动态检索的项目列表创建唯一ID。例如,

$(".split").each(function(index) { 
    $(this).attr("id", "row_" + index.toString()); 
}); 

,那么你会选择如下:

$("#row_" + c) 

,比如说,看起来像这样(忽略我使用的DIV的事实)元素:

 
    <div id="row_0">...</div> 
    <div id="row_1">...</div> 
    <div id="row_2">...</div> 
    <div id="row_3">...</div> 
    <div id="row_4">...</div> 

更新:我原本说这些数字是无效的CSS选择器。下面的@acdcjunior发布了一条链接,使我的原始声明无效。我的意思是,你应该避免命名与数字项目,因为:

  1. 他们不让你的代码可读。
  2. ID对于整个HTML文档必须是唯一的。如果您的HTML文档中还有另一部分也用数字命名重复项目,则会碰到命名冲突。在这种情况下,如前所述,将它们加上前缀,以便在使用它们的上下文中有意义。
+0

[使用唯一编号的ID是有效的HTML5。](http:// www。w3.org/TR/html5/dom.html#the-id-attribute)。 '#1'是一个无效的CSS选择器,是的,但它可以作为'#\ 31'转义,而Sizzle/jQuery支持'#1'。因此,你指向*,因为这是一个无效的CSS选择器*,充其量,是至关重要的。 – acdcjunior

+0

感谢您的反馈。但为了可读性,我坚持原来的声明,用数字来命名事物并不是一个好主意。只因为你可以,并不意味着你应该。 –

+0

建议不要使用纯数字ID没有问题。我认为重要的是要注意的是,你并不是在暗示,你所说的数字是无效的标识符,这并不意味着你的答案会丢失,因为它有其他的优点,但是这些信息是不正确的。 – acdcjunior

1

试试下面的代码: -

$( “#” +数据);

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – Joeytje50

+2

@ Joeytje50请不要这么快判断。这是一个正确的答案。 – hvd

+1

@ hvd好吧,对于给定的原因我很抱歉,但是这个答案看起来更像是评论而不是答案。一个答案,特别是当回答者有25分钟的时间时,应该有一个比'请尝试这个'更进一步的解释。当你说'尝试这个'时,你会要求提问者做一些事情,看看它是否有效,而答案通常只是说'这是解决方案'。 - 虽然原因并不完全适用于这种情况,但我仍然认为这个答案只是一个评论,而不是一个完整的答案。 – Joeytje50