【问题标题】:Jquery escape only a part of the stringJquery 只转义字符串的一部分
【发布时间】:2014-02-14 00:48:53
【问题描述】:

我一直试图在 jquery 中只转义字符串的一部分。

直接上例子

$("#tbody").append("Hi <escape this> and <not this>");

我知道我可以通过这样做来逃避它。

$("#tbody").text("Hi <escape this> and <not this>");

然后整个字符串被转义,它不仅仅是一行,而是整个 tbody 的上下文。

然后我试着把它放在几个这样的追加中

$("#tbody").append("Hi");
$("#void").text("<escape this>").appendTo("#tbody");
$("#tbody").append("and <not this>");

现在这会为每个追加创建行并破坏我的条目结构,因为它应该只增加一行。

亲切的问候

【问题讨论】:

    标签: javascript jquery string escaping


    【解决方案1】:

    你可以做这样的事情......

    var textToBody = "Hi " + escape("<escape this>") + " and <not this>";
    $("#tbody").append(textToBody);
    

    More Help...

    【讨论】:

    • 是的,但是 escape() 将它输出为 %3Cescape%20this%3E 这不是我想要的,我仍然希望它以正常形式显示。
    【解决方案2】:

    您可以使用 HTML Entities,因为 jQuery 的 append() 不会解析它们,浏览器应该将它们显示为文本:

    $("#tbody").append("Hi &lt;escape this&gt; and <not this>");
    

    输出应该是:

    &lt;not this&gt; 呈现为 HTML 标记,因此不会显示为文本。

    【讨论】:

    • 是的,很公平,我的错误是我没有完成我的问题。 将是来自用户的数据。谢谢
    • @user2715411 然后你可以通过简单的替换来做到这一点(首先想到的!):var userData = "Fetch &lt;data&gt; any &lt;way&gt;"; userData = userData.replace(/&lt;/g, '&amp;lt;').replace(/&gt;/g, '&amp;gt;');
    • 酷我会这样做,但没有更好的方法吗?我觉得这不是最好的方法,因为输入可以是任何东西,所以我必须检查每个存在的特殊字符。
    • 你可以自己做一些研究,但在大多数情况下,the above replace example 被使用或jQuery's .text() 你尝试过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2014-10-07
    • 2018-03-30
    相关资源
    最近更新 更多