用jQuery 选择器选取包含特殊字符的元素

当使用jQuery选择器的时候,如果id里包含#:[]之类的特殊的符号,或者xml里有如这样的,一般情况下是无法选到的。
这个时候可以使用一些技巧来选择相关的内容。
使用转义字符,并且使用两个即可
比如要选择id为a:1的元素
可以写成$("#a\:1")。
当然也可以写作$("[id=a:1]")。
当然,效率哪个高大家都知道~
而且,如果要处理XML的话就没这么容易了。

这种,只需要$("adb\:aaa")即可

具体实现原理么,不是很明白。以前wzmaodong写表单验证的时候也出现过类似的问题。所以这回才想起来的。

他的解释是“采用的是显式构造函数new RegExp("pattern"[,"flags"]); 由于Javascript 中'' 被用作转义字符,所以在使用显示构造函数构造实例对象的时候,需要使用'\' 代替''”

但是我就纳闷了,我一个选择器难道jQuery内部也做正则去了么?明明是被正则解析啊。迷茫了。

[html]

fail

[/html]

《用jQuery 选择器选取包含特殊字符的元素》有4个想法

  1. 这个在xml不能兼容IE和FF。。还有其他办法吗???可能是因为IE要解析命名空间。而FF不需要解析命名空间。导致不能通用。。。[face11]

  2. 不好意思。没说清楚

    这种,xml用$("adb\\:aaa")不能解析么?
    这个在IE上是完全没问题的。。但在FF上就不行。。可能是因为IE要解析命名空间。而FF不需要解析命名空间
    现在我根据浏览器来判断需不需要加命名空间。虽然有点麻烦。但总算达到目标啦。谢谢博主!~

发表评论