用某些特征替换HTML中的字符串

时间:2012-11-29 11:20:24

标签: javascript jquery replace

我需要将以img开头的http://player.vimeo.com标记的每个实例替换为另一个网址。

例如,您可以在页面代码中找到它:

<img src="http://player.vimeo.com/video/4887233">

我正在尝试制作一个jQuery脚本,它会找到以img开头的每个http://player.vimeo.com src,并用另一个字符串替换src(每个字符串都是相同的字符串) vimeo链接,基本上是一个变量)。

如何查找vimeo链接并确保无论长度如何都替换整个链接(某些链接会比其他链接长,但总是以相同的字符串开头)?

5 个答案:

答案 0 :(得分:4)

使用attribute starts with selector

选择所有img
$("img[src^='http://player.vimeo.com]'").each(function(){
    this.src = this.src.replace("player.vimeo.com", "new.url.com");
});

以上内容会将player.vimeo.com中的src替换为new.url.com。如果您需要另外设置src,请执行this.src = 'new url';

值得注意的是,当您想要更改src等原生属性时,与each相比,attr的效果会更好,这可以在jsPerf中看到

查看demo on jsFiddle

答案 1 :(得分:2)

http://api.jquery.com/attribute-starts-with-selector/

$("img[src^=\"http://player.vimeo.com\"]").attr("src", "new_string")

$("img[src^=\"http://player.vimeo.com\"]").attr("src", function(i, val) {return val.replace("http://player.vimeo.com", "new url")})

问题是否应该替换整个链接或仅使用另一个字符串“http://player ...”,这两个案例的代码都不够清楚。

根据Markus Ekwall评论,attr比每个都慢,所以最好用以下代码替换上面的代码:

$("img[src^=\"http://player.vimeo.com\"]").each(function() {this.src = "new_string";});

$("img[src^=\"http://player.vimeo.com\"]").each(function() { this.src = this.src.replace("http://player.vimeo.com", "new url"); })

答案 2 :(得分:1)

您可以对每个元素执行filter()并匹配src属性,然后替换它:

$('img').filter(function() {
    return /^http:\/\/player\.vimeo\.com/.test(this.src);
}).attr('src', 'somethingelse');

如果你想进行单独的替换,你也可以使用函数代替'somethingelse',f.ex:

.attr('src', function(i, src) {
    return src.replace(/vimeo/,'youtube');
})

答案 3 :(得分:0)

使用id访问元素的href属性,并将更新后的href字符串url传递给attr方法:

 <script>
    $(document).ready(function(){
    $("button").click(function(){
    $("#link").attr("href","http://www.example.com/login.html"); //pass ur new url here
  });
});
 </script>

在html体内:

<p><a href="http://www.example.com" id="link">Link name</a></p>

答案 4 :(得分:-1)

如果您只想替换search-url,请使用此选项。

$(function(){
    $('img').each(function(index,elem) {
        var newValue = "http://youtube.com";

        var $this = $(this);
        var strSrc = $this.attr('src');
        var regTest = /http:\/\/player\.vimeo\.com/;

        if(regTest.test(strSrc)) {
            $this.attr('src', strSrc.replace(regTest, newValue) );
        }
    });
});