【问题标题】:jQuery $().html escapes &-signjQuery $().html 转义 &-sign
【发布时间】:2012-06-06 18:24:23
【问题描述】:
var alt = json_data['alt']; // some text
var url = json_data['url']; // some url

var img_url = '<img src=\'/' + url + '?h=100&w=100\' alt=\'' + alt + '\'>';
$('#imagepreview').html(img_url); // translates to <img src="/some_url?h=100&amp;w=100" alt="some_text">

为什么会发生这种情况,我该如何预防?

【问题讨论】:

  • 实际上这很好,因为它可以生成有效的 HTML。为了使 HTML 代码有效,必须在 urls 中像这样对 & 符号进行转义。所以我认为这里没有问题,它应该可以工作。
  • 好的,但在这个例子中我想要 & 而不是 &

标签: javascript jquery


【解决方案1】:

您必须使用 \u0026 而不是 &

【讨论】:

    【解决方案2】:

    我个人认为不会发生这种情况,但是您应该这样做:

    var img = $('<img />', {
        src: '/' + url + '?h=100&w=100',
        alt: alt
    }).appendTo('#imagepreview');
    

    这样可以确保正确完成任何转义,例如 alt 属性!

    【讨论】:

    • 这转换为
    • @CasvanNoort 我认为您确定的方式对于每个浏览器都不相同;为什么网址不应该有&amp;amp;
    • @CasvanNoort 你试过这个吗:console.log($('#imagepreview img').attr('src'));
    【解决方案3】:

    &amp;amp; 实际上是有效的 URL,而不是 &

    【讨论】:

    • 好的,但在这个例子中我想要 & 而不是 &
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2011-12-08
    • 2014-03-12
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多