我需要将以img
开头的http://player.vimeo.com
标记的每个实例替换为另一个网址。
例如,您可以在页面代码中找到它:
<img src="http://player.vimeo.com/video/4887233">
我正在尝试制作一个jQuery脚本,它会找到以img
开头的每个http://player.vimeo.com
src,并用另一个字符串替换src
(每个字符串都是相同的字符串) vimeo链接,基本上是一个变量)。
如何查找vimeo链接并确保无论长度如何都替换整个链接(某些链接会比其他链接长,但总是以相同的字符串开头)?
答案 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中看到
答案 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) );
}
});
});