在Firefox和Opera中,jQuery .html('<img>')无法正常工作。

3

这一行

jq("#description" + tourId).html('<b>Opis: </b>  '+ data);

在IE,Firefox和Opera中都运行良好。

但是这个

jq("#images" + tourId).html('<img src=\"img\\gbflag.png\"/>');

代码只能在IE浏览器中正常工作,Firefox和Opera无法显示图片。您知道为什么吗?

以下是我的其余代码:

<script type="text/javascript">
var jq = jQuery.noConflict();
function showImages(tourId) {
    jq(function() {
        jq.post("/TourWebSpring/tourImages.html",
            {tourId: tourId},
        function(data) {
            ...
            ...
            jq("#images" + tourId).html('<img src=\"img\\gbflag.png\"/>');
        });
    });
}

function showDetails(tourId) {
    jq(function() {
        jq.post("/TourWebSpring/tourDetail.html",
            {tourId: tourId},
        function(data) {
            ... 
            jq("#description" + tourId).html('<b>Opis: </b>  '+ data);
        });
    });
}


由于您使用单引号 ',因此在 <img src=\"img\\gbflag.png\"/> 字符串中不需要转义任何内容,应该是 <img src="img/gbflag.png"/> - Adi
你在文件路径中使用了反斜杠,请尝试使用正斜杠。 - Pekka
3个回答

7

我认为问题可能是您在目录后使用了错误的斜杠,并且我不认为您需要转义双引号,因为您是用单引号定义字符串。请尝试:

jq("#images" + tourId).html('<img src="img/gbflag.png"/>');

1
jq("#images" + tourId).html('<img src=\"img\\gbflag.png\"/>');

应该是

jq("#images" + tourId).html('<img src="img/gbflag.png" />');

-1

你不需要转义,所以应该是:

jq("#images" + tourId).html('<img src="img\gbflag.png"/>');

更新

哎呀,我没注意到你在使用反斜杠.. Scott 指出得很好!


在双引号内打印双引号时,需要进行转义。 - Software Guy
你不需要转义引号(尽管它只会影响可读性,而不是语法错误),但你确实需要转义反斜杠。虽然在这种情况下,提问者可能需要一个正斜杠... - nnnnnn
1
我认为StackOverflow应该有一个系统,在其中需要附带说明才能进行负投票,以便OP可以弄清楚为什么被负投票。 - Software Guy
1
我同意你的看法,未经解释的负投票并不是很有帮助,但在这种情况下,也许投反对票的人(不是我)认为我的先前评论已经解释得足够清楚了。你的声明“你不需要转义”实际上是错误的,因为它并没有适用于反斜杠,而当它被应用到引号时会误导人,因为你接着说“应该是...”,这暗示了你建议的更改是必要的,但实际上并非如此。 - nnnnnn
感谢您的澄清,nnnnn。实际上,当我写“您不必转义”时,我没有意识到OP使用了反斜杠,后来我更新了我的答案以反映这一点。我没有注意到反斜杠,并更新了我的答案以表明这一点,这让我对那个踩票感到有些奇怪 :) - Software Guy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接