我有一个令人沮丧的问题,我确信这是一个简单的答案。不幸的是我似乎无法在任何地方找到它!我有一个我无法控制的表(SharePoint),并且已分配的表ID包含大括号:
e.g。 <table id="{ACDC3234-D009-4889-931A-FCC069613AB6}-{EF2BF0FD-7927-4194-910F-0FE83EC4F118}"></table>
如何在保留括号的同时使用JQuery选择表?
目前的代码是:
$(function(){
$('/{#{ACAC3258-D068-4799-931A-FCC069613AB6}-{EF2BF0FD-7927-4194-910F-0FE83EC4F118}}/').visualize({type: 'bar', width: '420px'});
});
我正在尝试使用JQuery Graphing Tool,Visualize。
对此的任何帮助都会非常感激!
非常感谢!
答案 0 :(得分:9)
最简单的选择是致电$(document.getElementById("{ACDC3234-D009-4889-931A-FCC069613AB6}-{EF2BF0FD-7927-4194-910F-0FE83EC4F118}"))
。
您还可以尝试使用\
字符转义大括号(必须在JS字符串文字中转义):
$('#\\{ACDC3234-D009-4889-931A-FCC069613AB6\\}-\\{EF2BF0FD-7927-4194-910F-0FE83EC4F118\\}')
答案 1 :(得分:3)
由于它是无效的ID,您可能无法使用ID选择器。这可能会起作用:
$('table[id="{ACDC3234-D009-4889-931A-FCC069613AB6}-{EF2BF0FD-7927-4194-910F-0FE83EC4F118}"]')
现在你正在使用任何属性选择器(无论调用什么)。既然您可以在属性中放置任何内容,您可以(我认为!)搜索它。
也许jQuery不会允许它......
修改强>
jQuery 1.3.2允许它:http://jsfiddle.net/rudiedirkx/VHpFb/
答案 2 :(得分:3)
此外,reading documentation有助于:
如果您希望使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\]^`{|}~
)作为名称的文字部分,则必须使用两个反斜杠转义字符:\\
。
答案 3 :(得分:2)
该ID在HTML4中无效,因此您不能假设每个浏览器或工具都能够处理它。
来自spec:
ID
和NAME
令牌必须以字母([A-Za-z]
)开头,后跟任意数量的字母,数字([0-9]
),连字符({{ 1}}),下划线("-"
),冒号("_"
)和句点(":"
)。
然而,可能值得注意的是HTML5(部分是对现有浏览器如何处理HTML的重新标准化)does remove those restrictions,所以尽管我发出警告,可能另一种解决方案< em>将更频繁地工作。