有没有一个插件可以使 jQuery id 选择器点安全?
我已经知道如何选择 ID 包含点的 DOM 元素,并且我已经阅读了 stackoverflow 上的所有相关答案(如下所示: 当 id 包含点时,如何使用 jquery 按 ID 选择 html 节点?),但是问题是有很多插件没有意识到这个问题,并且没有仔细检查我们正在使用的所有插件的代码并适当地替换选择器,我在想也许还有另一个插件/ jQuery 的扩展名,它取代了主要的选择器机制,使其成为点安全的。我正在使用像 jqGrid 这样的插件,并且我在代码中看到很多地方都使用了这样的东西:
$('#' + id).somefunction()
有什么想法吗?
提前致谢
I already know how to select DOM elements with IDs which contain dots, and I've read all the related answers on stackoverflow (like this: How to select html nodes by ID with jquery when the id contains a dot?), but the problem is there's lots of plugins out there that are not aware of this issue, and short of going through the code of all the plug-ins we're using and replace the selectors appropriately, I was thinking that maybe there's another plug-in/extension for jQuery which replaces the main selector mechanism to make it dot-safe. I am using plug-ins like jqGrid and I've seen many places in the code where something like this is used:
$('#' + id).somefunction()
Any ideas?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以更改
$.fn.init
函数来更改 jQuery 的行为,但没有一种快速简便的方法可以确保带点的 ID 在整个应用程序中都是安全的。一个快速而肮脏的解决方案将通过更改init
函数将所有.
替换为\\.
,但随后所有类选择器都会中断。唯一可靠的方法是将带有转义点的 ID 传递给所有插件。
编辑
如果您确实想要一个快速而肮脏的解决方案,只要您没有像
#id.class
这样的东西,这里的解决方案至少可以工作。它适用于#id .class
(中间的空格)。You can alter the
$.fn.init
function to change the behavior of jQuery, but there isn't a quick and easy way to make sure IDs with dots in them are safe throughout your application. A quick and dirty solution would replace all.
s with\\.
by altering theinit
function, but then all your class selectors break.The only solid way to do it is passing in the IDs with escaped dots to all your plugins.
EDIT
If you do want a quick and dirty solution, here's one that will at least work as long as you don't have something like
#id.class
. It will work for#id .class
(the space in between).