用<a> tags via jquery find and replace</a>包装文本网址

时间:2012-08-09 15:16:05

标签: javascript jquery regex replace

我通过getJSON提取推文并使用javascript将它们写入Google地图信息窗口。问题是,这些推文带有文本链接,但没有格式化(没有id / classes /任何缩小查找和替换的东西)。这是我现在用来查找文本的代码混合,但我无法将它包装在<a>标记中找到的任何内容以正确显示链接:

function wrap( str ) {
    return '<a href="' + str + '">' + str + '<\/a>';
};

function replaceText() {
    var jthis = $(this);
    $("*").each(function () {
        if (jthis.children().length == 0) {
            jthis.text(jthis.text().replace(/\bhttp[^ ]+/i, wrap));
        }
    });
}
$(document).ready(replaceText);
$("html").ajaxStop(replaceText);

我是否忽略了某些事情,或者有人知道更好的方法吗?

1 个答案:

答案 0 :(得分:4)

如果我理解你的问题,这应该有效。 不知道为什么要迭代元素,因为regexp无论如何都会扫描所有文本。

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js" type="text/javascript"></script>
        <script>
        function wrap( str ) {
            return '<a href="' + str + '">' + str + '<\/a>';
        };
        function replaceText() {
            $(".tweet").each( function(){
              $(this).html($(this).html().replace(/\bhttp[^ ]+/ig, wrap));
            })

        }
        $(document).ready(replaceText);
        </script>
    </head>
    <body>
        <div class="tweet"> test 1 http://example.com/path </div>
        <div class="tweet"> test 2 http://example.com/path </div>
    </body>
</html>