2011-11-12 118 views
3

我有一个div列表,每个都有一个id。该ID还表示为链接:"http://en.wikipedia.org/wiki/" + id是该条目的维基百科上的链接,"/image/" + id + ".jpg"是本项目的本地图像。jquery中的特殊字符

但我有一些特殊字符的编号。有两种类型(我发现有bug):首先,A_(B),包含括号,第二A%C3%A9B(AéB),包含特殊字母。我知道()可以换成%28%29,所以它基本上只有一种类型。我已经测试过,这种名字适用于图像和维基链接。

问题是,当我使用jQuery时,$('#' + id)找不到具有特殊字母的对象。任何人有任何想法如何处理它?

回答

0

有关更多信息,请参见this SO question

就我个人而言,我认为身份证应符合人类可读,易于理解的ID。考虑使用不同的机制来附加网址,例如jQuery的$.data或另一个没有有效性限制的属性。

+0

我相信,所以它会容易得多我用标题来记录该链接名称改为 – DrXCheng

1

你尝试过:

var id = encodeURIComponent(id); 
$('#' + id); 

,看它是否解决了呢?

+0

做了这个帮助还是工作? –

2

如果您看看selectors页面的第二段,它会告诉您这些字符!"#$%&'()*+,./:;<=>[email protected][\]^``{|}~在使用时需要转义。

但是,如果您包含其他字符,最好使用其转义码来包含它们(google closure compiler将自动为您执行此操作)。所以这个字母é可以替换为\u00e9

0

一个很好的经验法则是首先符合相关规范。根据HTML 4.01

ID和名称标记必须以字母开头([A-ZA-Z]),并且可以是 后跟任意数量的字母,数字([0-9]),连字符( “ - ”), 下划线(“_”),冒号(“:”)和句点(“。”)。

因此,在元素ID或名称中不允许使用像(,)和%这样的字符。

ids中的不合格字符很可能会导致jQuery以外的问题。使用encodeURIComponent(例如,要替换(使用%28)也无济于事,因为%字符也是不允许的,但是您可以使用字符实体去除典型az,AZ范围外的字母,或者您可以使用普通的旧的document.getElementById如果你真的需要使用jQuery:。

$(document.getElementById(id)) 

可能就足够了(但不可靠)