如何摆脱“:”?
例如我有id喜欢
someform:somepanel:somebutton
当我执行 jQuery("#someform:somepanel:somebutton") 它返回某种形式时,如何自动转义该 id?
编辑:
我想做这样的事情
jQuery(somefunction("#someform:somepanel:somebutton"))
for example I have id like
someform:somepanel:somebutton
When I do jQuery("#someform:somepanel:somebutton") it returns someform, how to AUTOMATICALLY escape that id?
EDIT:
I want to do something like this
jQuery(somefunction("#someform:somepanel:somebutton"))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
如果只是这个非常专业的版本,您只需
.replace()
字符即可。然后转换为
要获得更通用的版本,您可以使用正则表达式:
If it's only this very specialized version, you can just
.replace()
the character.is then converted into
To have a more generic version, you can use a regexp:
使用双反斜杠:
相关:
http://api.jquery.com/category/选择器/
!"#$%&'()*+,./:;?@[\]^{|}~
)作为名称的文字部分,您必须使用两个反斜杠转义该字符:\\.
例如,如果您有一个带有id 的元素="foo.bar"
,您可以使用选择器$("#foo\\.bar")
W3C CSS 规范包含 有关有效 CSS 选择器的完整规则集。更新#1
在您对 auto 发表评论后 /em> 转义我看到的最好的方法是在字符串对象中创建一个函数,这样
你也可以像这样专门为冒号定义一个函数:
并像这样使用:
但这会导致伪选择器出现问题,例如
:
:first
选择器将被转义,因此您将找不到您的元素。但是我们最好的选择是在原型中构建一个字符串解析器来替换它找到一组特定字符的位置,例如:
这样您就可以定义要转义的内容,但如果是这种情况,您也可以转义他们自己。
use the double backslashes:
Related:
http://api.jquery.com/category/selectors/
!"#$%&'()*+,./:;?@[\]^{|}~
) as a literal part of a name, you must escape the character with two backslashes:\\.
For example, if you have an an element withid="foo.bar"
, you can use the selector$("#foo\\.bar")
. The W3C CSS specification contains the complete set of rules regarding valid CSS selectors.Update #1
After your comment in regards to auto escaping the best method I see is to create a function within the string object like so
you can also specifically define a function for the colons like so:
and use like so:
but this will cause issues on pseudo selectors such as:
the
:first
selector will be escaped and therefore you will not find your element.but y our best bet will be to build a string parser within the prototype to replace where it finds a specific set of chars such as:
this way you can define what you want to escape, but if that was the case you may as well escape them yourself.
尝试:
Try:
如果您使用 PrimeFaces,它们有一个方便的辅助函数可以做到这一点:
调用它:
它返回:
在内部,它只调用
replace(/:/g,"\\:")
并添加#
,所以你可以使用它,也。If you use PrimeFaces, they have a handy helper function to do just that:
To call it:
which returns:
Internally, it just calls
replace(/:/g,"\\:")
and adds the#
, so you could use that, too.我在 jQuery 中创建了一个函数来转义 JSF 的冒号:
I have created a function to escape colons for JSF in jQuery:
使用这个技巧:
jQuery($('myid'))
原因:我使用“prototype”按 id 查找元素,然后将结果传递给 jQuery。
优点:更容易阅读。
缺点:需要 Prototype 和 jQuery,但 RichFaces 无论如何都使用 Prototype。
Use this trick:
jQuery($('myid'))
Reason: I'm using "prototype" to look up element by id, then I pass result to jQuery.
Pros: easier to read.
Cons: need Prototype and jQuery, but RichFaces uses Prototype anyway.
JQuery
3.0
提供了转义函数:https://api.jquery.com /jQuery.escapeSelector/
JQuery
3.0
provides an escape function:https://api.jquery.com/jQuery.escapeSelector/