在jquery选择器中使用变量

我正在尝试使用以下代码构建动态jquery选择器:

var section_id = "{segment_3}"; var num_children = $('#'+ section_id + ' ul').children().size(); 

其中segment_3是我从url字符串中成功检索的值,例如,它可能返回“section_one”的值

但是在尝试创建变量num_children时,此引用不起作用。 如何构建代码以构建动态引用? 谢谢你的帮助。

假设var section_id =’section_1’这个:

 $('#'+ section_id + ' ul').children().size(); 

会给你

 $('#section_1 ul').children().size(); 

是的,这也是有效的。 它会在#section_1元素中提供所有ul元素(无论它们有多深)。 可能你会获得一系列元素并且调用.children()就可以了。 它应该都可行。

对于HTML 4.01,id属性对于允许的值字符(命名规则)非常有限:

id属性必须以字母AZ或az开头,后跟:字母(A-Za-z),数字(0-9),连字符(“ – ”),下划线(“_”),冒号(“:”)和句点(“。”)和所有值都区分大小写。

*注意:根据我的经验,我发现只使用小写字符和_用于id使得它们非常清晰,并且它们脱离了CSS选择器(.something:pseudo-class)*

另一方面,在HTML5中,你可以获得几乎任何id的值。

参考: http : //www.w3.org/TR/html5/elements.html#the-id-attribute

因此,您的选择器完全正确(有效)与HTML5规范,但为了使它与jQuery一起工作,您需要转义选择器解析器使用的所有字符具有特殊含义。 而且因为它的JavaScript代码,你必须使用两个\\(第一个逃脱第二个)。 JQuery没有为您提供这样做的方法,所以下面是我使用的代码:

例:

     jQuery HTML5 Selector Escaping     
  • Sehr
  • Gut
  • Doh

我编辑了代码,修复了一些错误。 🙂

尝试

 var num_children = $('#'+ section_id.substring(1, section_id.length-2) + ' ul').children().size(); 

上面的注释是正确的… id选择器的基本语法是$(#itemID)…

var myValue = $(“#new_grouping _”+ i).val(); //这个有效