问题描述
|
这是一个令人尴尬的场景,但我需要解决方案。
我正在使用一些名称作为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="Some Term"\"> xyz </li>
我用.replace(/“ / gi,\” \\\“ \”)替换它
请让我知道,如何在IE中运行它,谢谢
抱歉,我需要在问题中提供更多信息...
首先,我获得ID为
var aaa = \"someCompany="some Data"\";
我将其替换为
aaa = aaa.replace(/"/gi,\"\\\"\").replace(/'/gi,\"\\\'\").replace(/&/gi,\"\\&\");
然后,
var abc = aaa.replace(/\"/gi,\"\\\\\\\"\").replace(/\\:/gi,\"\\:\").replace(/\'/gi,\"\\\\\\\'\");
然后我的问题如下...
当我尝试将上述行更改为
var abc = aaa.replace(/\"/gi,\"\\\"\").replace(/\\:/gi,\"\\\'\");
一切都很好,但我有一些名字,例如
var aaa = \"someCompany="some\'s Data"\"; //In this case I need to handle more special chanracters
此处,.replace(/\"/gi,\"\\\\\\\"\")
在Firefox中可以正常工作,但在IE中则不能。我怎样才能使其在IE中正常工作,请提出建议
解决方法
尝试使用浏览器验证,例如IE中的单引号和斜杠以及FF中的双引号。
,您正在使用哪个版本的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/
,var abc = $(\"[id=\'someCompany=\\\"Some Term\\\"\']\");
alert($(abc).html()); //returns xyz
在IE7和8中对我有效,唯一的区别是整个属性值周围的单引号而不是双精度值