首页 > 解决方案 > jQuery从ajax加载的内容替换字符串

问题描述

我正在尝试用另一个字符串替换一个字符串的所有实例。这是我到目前为止所拥有的:

我通过ajax加载模板html文件,这是内容:

<div style="background-image:url({URL}/photo.png)">
    <div>
        <p>
           <h1>
             <a href="{URL}">link 1</a>
           </h1>
        </p>
        <a href="{URL}">link 2</a>
    </div>
</div>

所以基本上我需要用实际的 url 替换 {URL} 的所有实例。

我尝试过这样的事情:

$.get("template.html")
    .done(function(data) {
        data.replace("/{URL}/g", "http://example.com");
});

或者:

$.get("template.html")
    .done(function(data) {
        $(data).html($(data).html().replace("{URL}", "http://example.com"));
});

但它们都不起作用。

标签: jqueryreplace

解决方案


使用全局替换data.replace("/{URL}/g", "http://example.com");的正确语法不是正确的语法是:data.replace(/{URL}/g, "http://example.com");

我尝试了下面的代码,它按预期工作:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript">
        $().ready(function () {
            $.get("template.html", )
                .done(function (data) {
                    data = data.replace(/{URL}/g, "http://yourdomain.com");
                    $("#content").html(data);
                                });
                });

    </script>
</head>
<body>
    <div id="content"></div>
</body>
</html>

请记住,该data.replace()函数不会更改data对象的实际内容,因此我编写了data = data.replace(/{URL}/g, "http://yourdomain.com");然后我将修改后的内容插入到div标签中。最后,在您的template.html文件中,第一行应该是这样的:<div style="background-image:url('{URL}/photo.png)'">因为 url() 需要一个字符串!

详情请参阅JavaScript String replace() 方法


推荐阅读