当前位置:  开发笔记 > 编程语言 > 正文

当id包含点时,如何通过ID和jquery选择html节点?

如何解决《当id包含点时,如何通过ID和jquery选择html节点?》经验,为你挑选了5个好方法。

如果我的HTML看起来像这样:


    

我怎么能用JQuery选择#SearchBag.CompanyName?我无法让它发挥作用,我担心这是打破一切的点.令人讨厌的是,重命名我所有的id将是很多工作,更不用说可读性的损失.

注意:
请不要开始讨论如何制作表格以进行布局.我非常清楚CSS的价值和缺点,并尽可能地努力使用它.



1> bobince..:

@Tomalak在评论中:

因为ID选择器必须以hash#开头,所以这里不应该有歧义

"#id.class"是一个有效的选择器,它需要一个id和一个单独的类来匹配; 它是有效的,并不总是完全冗余.

选择文字"."的正确方法.在CSS中是逃避它:"#id\.moreid".这曾经在一些旧的浏览器(特别是IE5.x)中引起麻烦,但所有现代桌面浏览器都支持它.

同样的方法似乎在jQuery 1.3.2中有效,尽管我还没有彻底测试过它; quickExpr不会提取它,但更复杂的选择器解析器似乎正确:

$('#SearchBag\\.CompanyName');


我觉得@Tomalak的答案更优雅,比如:`````$`'`````'````'```````````````````````````````````````
@Tom:"#id.class"可能适用于使用相同样式表的多个文档,或者使用客户端脚本设置状态.例如"#navhome.navselected".

2> Tomalak..:

一个变体是这样的:

$("input[id='SearchBag.CompanyName']")


因为.CompanyName被视为类选择器.
在ID上使用类选择器可能很有用.想象一下,每个页面上都有一个#menu元素,但想要在其中一个页面上使其不同.#menu.hideme例如?边缘我知道,但它是有效的.
快速查看源代码,这是一个故意的设计决策或一个错误。用于标识ID选择器的正则表达式(名为quickExpr)不包含点作为有效字符。HTML规范但是允许它。
这显然是最好的答案.也适用于这样的变量:$("tr [id ='"+ private_var +"']").css("background-color","#EEEEEE");

3> Blender..:

如果使用document.getElementById以下内容,则无需转义任何内容:

$(document.getElementById('strange.id[]'))

getElementById 假设输入只是一个id属性,因此点不会被解释为类选择器.



4> oneiros..:

简答:如果你有一个id =的元素"foo.bar",你可以使用选择器$("#foo\\.bar")

更长的答案:这是jquery文档的一部分 - 你可以在这里找到的部分选择器:http: //api.jquery.com/category/selectors/

您的问题在文档开头就已得到解答:

If you wish to use any of the meta-characters ( such as 
!"#$%&'()*+,./:;?@[\]^`{|}~ ) 
as a literal part of a name, you must escape the character with 
two backslashes: \\. For example, if you have an element with id="foo.bar", 
you can use the selector $("#foo\\.bar"). The W3C CSS specification contains 
the complete set of rules regarding valid CSS selectors. Also useful is the 
blog entry by Mathias Bynens on CSS character escape sequences for identifiers.


你确实意识到这个问题已经超过三年了,文档可能不一样了,对吧?

5> bishop..:

当您的ID在变量中时,attr选择似乎是合适的:

var id_you_want='foo.bar';
$('[id="' + id_you_want + '"]');

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有