使用Jquery和正则表达式来改变HREF的一部分

时间:2009-08-25 16:18:35

标签: jquery regex

我目前正在尝试使用Jquery来更改DIV中链接的href属性,以便将URL从file.html更改为file.jpg ...

<div class="gallery">
<a href="file.html">My File</a>

我希望将其更改为

<div class="gallery">
<a href="file.jpg">My File</a>

我已经看到post关于使用Jquery更改href属性并了解其中的一些内容,但我完全不知道如何将div中结束.html的所有链接更改为.jpg。文件名不需要更改。有人能指出我正确的方向寻求帮助吗?

4 个答案:

答案 0 :(得分:4)

尝试以下方法之一:

$("div.gallery a").each(function() {
    this.setAttribute("href", this.getAttribute("href").replace(/\.html$/, ".jpg"));
});

$("div.gallery a[href$=.html]").each(function() {
    var href = this.getAttribute("href");
    this.setAttribute("href", href.substr(0, href.length-6) + ".jpg"));
});

第一个会选择a中的每个div,并尝试使用正则表达式替换最后.html .jpg。第二个只会选择href值以.html结尾的值,并使用简单的字符串操作将其替换为.jpg

答案 1 :(得分:1)

只需为href与您的模式匹配的元素提取现有的href,然后使用字符串替换来获取新的href并进行设置。

$('a[href$=.html]').each( function() {
    var $this = $(this);
    var href = $this.attr('href').replace(/\.html/,'.jpg');
    $this.attr('href', href );
});

答案 2 :(得分:1)

var href=$(".gallery a").attr("href");
href=href.replace(/\.html$/,".jpg");
$(".gallery a").attr("href",href);

答案 3 :(得分:0)

我没有测试过,但我认为应该这样做:

$('a', '.gallery').each(function(){
   $(this).attr('href', $(this).attr('href').replace(/\.html$/, '.jpg'));
});