0

我需要替换以另一个 urlimg开头的标签的每个实例。http://player.vimeo.com

例如,您可能会在页面的代码中找到它:

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

我正在尝试制作一个 jQuery 脚本,该脚本将找到img以 src 开头的每个 srchttp://player.vimeo.com并将其替换为src另一个字符串(对于每个 vimeo 链接,它将是相同的字符串,本质上是一个变量)。

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

4

5 回答 5

4

选择所有以 selector 开头img的属性:

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

以上将替换player.vimeo.comsrcwith new.url.com。如果您需要src完全设置另一个,只需执行this.src = 'new url';.

值得注意的是,当您想要更改诸如 的原生属性时srceach与 相比会表现得更好,正如在这个jsPerfattr中可以看到的那样。

查看jsFiddle 上的演示。

于 2012-11-29T11:24:30.940 回答
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"); })
于 2012-11-29T11:24:50.923 回答
1

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

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

如果您想进行个别替换,您也可以使用函数而不是“其他东西”,f.ex:

.attr('src', function(i, src) {
    return src.replace(/vimeo/,'youtube');
})
于 2012-11-29T11:23:38.577 回答
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>
于 2012-11-29T11:41:44.140 回答
-1

如果您只想替换搜索 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) );
        }
    });
});
于 2012-11-29T11:27:52.427 回答