无法使用jquery更改href中的url

时间:2014-05-25 21:58:45

标签: javascript jquery

基本上,我尝试将中间部分的网址('#')替换为另一部分,并删除网址的第一部分。脚本取代'#'没有问题,但rfuses删除网址的第一部分。我做错了什么,还是有其他解决办法?

html of it

<a class="link_imagelibrary" href="#pink_yellow_flowers.pdf?5612">Download pdf set</a>

条件变为

<a class="imgdownload" href="http://www.picturewall.com/pages/Botanicalhttp://#.com/s/files/1/0183/2687/files/passpink_yellow_flowers.pdf?5612">Download pdf set</a>

jquery的

$(".imgdownload").each(function(){ 
   this.href = this.href.replace('#', 'http://#.com/s/files/1/0183/2687/files/pass');
   this.href = this.href.replace('http://www.#.com/pages/botanical', '');
}); 

它应该是有条件的。判断脚本的其余部分是否正常工作 - 看起来问题就在这里

2 个答案:

答案 0 :(得分:0)

href正在使用this.href进行扩展,因此您可以:

<a href="#" ...

DOM元素的href属性得到:

<a href="http://example.com/your/page/wherever.php#" ...

处理此问题的最简单方法是采用不同的方式:

$(".imgdownload").each(function(){ 
   this.href = 'http://cdn.shopify.com/s/files/1/0183/2687/files/pass' +
               this.href.split('#').pop();
});

以下是“问题”的演示:

$('a').each(function ea(){
    console.log(this.href, this.getAttribute('href'));
});

http://jsfiddle.net/Gtr8V/

您会注意到element.getAttribute('href')确实返回原始href属性值,而不是属性。您可以使用.replace()代替您尝试的this.href.replace()

答案 1 :(得分:0)

此行未匹配

this.href = this.href.replace('http://www.picturewall.com/pages/botanical', '');

因为它在你的href中不存在:(注意'Botanical'的大小写)

"http://www.picturewall.com/pages/Botanicalhttp://cdn.shopify.com/s/files/1/0183/2687/files/passpink_yellow_flowers.pdf?5612"