75年生人,程序员,在西安。

jQuery 获取带冒号“:”或带点“.”或带中括号“[]”等ID的DOM对象的写法

昨天遇到用jQuery取个元素取不到的问题,因为那个元素的ID是“line1.1”,一般给元素ID时都会避开特殊字符,但这个元素是动态生成的,涉及其他i18n等的问题,所以必须使用这样的ID,于是出现了脚本报错,产生了bug,查了一下原来是这样

这里要说明注意的是:

Escape之后整体传入$(afterEscaped),否则会被转意而变成另一个字串。

我就是看了那篇文章后,直接加了个替换的方法:

jqEscape: function(selector) {
    return selector.replace(/(:|\.|\[|\]|,)/g, "\\$1");
}

然后使用时这样:$("#" + jqEscape(elementId)),结果怎么也取不到,后来才知道被再次转意了,所以要这样:$(jqEscape("#"+elementId))才行。

评论

© 世风十三 | Powered by LOFTER