Jquery IE的特殊字符处理

时间:2011-05-24 10:59:46

标签: javascript jquery internet-explorer

这有点令人尴尬,但我需要解决方案。

我使用一些名称作为li HTML元素的ID。这些名称中包含特殊字符。使用JQuery获取Id。

让我说我的id用法是

var abc = li[id="someCompany=\"Some Term\""]

如果我将其称为

alert($(abc).parent()[0]); or 
alert($(abc).html()); 

我正在获取数据,一切都在 firefox 中正常运行,但在 IE 中没有。

我在应用程序中的实际ID显示是

<li id="someCompany=&#034;Some Term&#034;"> xyz </li>

我用.replace(/“/ gi,”\“”)

替换它

请告诉我,如何让它在IE中运行,提前致谢

对不起,伙计们,我需要在我的问题中提供更多信息......

首先,我得到ID为

var aaa = "someCompany=&#034;some Data&#034;";

我将其替换为

aaa = aaa.replace(/&#034;/gi, "\"").replace(/&#039;/gi, "\'").replace(/&amp;/gi, "\&");

然后,

var abc = aaa.replace(/"/gi, "\\\"").replace(/\:/gi, "\:").replace(/'/gi,"\\\'");

然后我的问题如下...... 当我尝试将上面的行更改为

var abc = aaa.replace(/"/gi, "\"").replace(/\:/gi, "\:").replace(/'/gi,"\'");

一切都很好,但我有一些名字,如

var aaa = "someCompany=&#034;some's Data&#034;"; //In this case I need to handle more special chanracters

在这里,.replace(/"/gi, "\\\"")在Firefox中运行良好,但在IE中运行不正常。如何让它在IE中运行,请建议

3 个答案:

答案 0 :(得分:1)

尝试使用浏览器验证,例如IE中的单引号和斜线,以及FF中的双精度。

答案 1 :(得分:0)

您使用的是哪个版本的IE?我在IE9上,在jsFiddle上,我在IE中工作(在IE7 / 8/9标准模式下)。我和你的代码之间唯一不同的是我在abc周围加上引号,即var abc ='li [id =“someCompany = \”Some Term \“”]'...我假设你已经有了虽然?

http://jsfiddle.net/benno_007/mhHJh/2/

虽然.parent()[0]返回一个对象,而不是xyz。如果您只需要访问xyz,只需使用$(abc).html()

编辑:

使用这些尴尬ID的替代方法可能是:

<li id="someCompany" term="Some Term">test</li>

$('#someCompany[term="Some Term"]').html();

此处:http://jsfiddle.net/benno_007/mhHJh/3/

答案 2 :(得分:0)

var abc = $("[id='someCompany=\"Some Term\"']");
alert($(abc).html()); //returns xyz

在IE7和8中适用于我,唯一的区别是整个属性值的单引号而不是你有的双打