我有一个div列表,每个都有一个id。该ID也作为链接执行:"http://en.wikipedia.org/wiki/" + id
是维基百科上此项目的链接,"/image/" + id + ".jpg"
是此项目的本地图片。
但我有一些特殊字符的id。有两种类型(我发现有bug):第一种是A_(B)
,包含括号,第二种A%C3%A9B
(AéB),包含特殊字母。我知道()
可以替换为%28%29
,因此它基本上只有一种类型。我已经测试过,这种名称适用于图像和维基链接。
问题是,当我使用jQuery时,$('#' + id)
无法找到带有特殊字母的对象。任何人都知道如何处理它?</ p>
答案 0 :(得分:2)
如果您查看selectors页面的第二段,则会显示这些字符!"#$%&'()*+,./:;<=>?@[\]^``{|}~
在使用时需要进行转义。
但是如果你包括其他角色,最好使用他们的转义码来包含它们(google closure compiler会自动为你做这个)。因此,此é
字母可以替换为\u00e9
答案 1 :(得分:1)
你试过了吗?
var id = encodeURIComponent(id);
$('#' + id);
看它能否解决它?
答案 2 :(得分:0)
有关详细信息,请参阅this SO question。
就个人而言,我认为ID应该符合人类可读,易于理解的ID。考虑使用不同的机制附加URL,例如jQuery&#39; $.data
,或其他没有效力限制的属性。
答案 3 :(得分:0)
一个好的经验法则是首先符合相关规范。根据{{3}}:
ID和NAME令牌必须以字母([A-Za-z])开头,可能是 后跟任意数量的字母,数字([0-9]),连字符(“ - ”), 下划线(“_”),冒号(“:”)和句点(“。”)。
因此,元素ID或名称中不允许使用(,)和%等字符。
id中的不符合字符可能会导致jQuery以外的问题。使用 encodeURIComponent (例如替换(使用%28)也无济于事,因为也不允许使用%字符。但是你可以使用字符实体来处理典型的az,AZ范围之外的字母,或者你可以使用普通的 document.getElementById ,如果你真的需要使用jQuery:
$(document.getElementById(id))
可能就足够了(但不可靠)。