2013-11-20 243 views
0

點擊鏈接時我需要改變一部分url。點擊鏈接時用jQuery改變網址

$('.slavearticle a.headlinelink').click(function() { 
    var url = $(this).attr('href'); 
    url = url.replace('/something.example.com', 'betterexample.no'); 
    console.log(url); 
    return false; 
}); 

期望在這裏都將是如果該URL是something.example.com/index.html將它更改後到betterexample.no/index.html一切/永遠不會改變

這似乎工作,但我有一個問題。 「something.example.com」 需要更有活力

$( 'slavearticle a.headlinelink')。點擊(函數(){

VAR URL = $(本).attr ( 'href' 屬性);

URL = url.replace(something.example.com, 'betterexample.no');

window.location.href = URL;
});

的缺點是,我有需要此功能的50名不同的網站。有什麼辦法可以在/之後獲得所有內容,以便這可以在任何網站上使用?

+0

退房工作pushState的https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history –

+0

你從來沒有用新值設置href!你似乎在第一部分中有一個額外的/。 – epascarello

+0

,你想要點擊鏈接?如果是這種情況,爲什麼不在沒有替換鏈接的情況下重定向呢? – dajavax

回答

0

添加一條額外的行: $(this).attr('href',url);

$('.slavearticle a.headlinelink').click(function(){ 

     var url = $(this).attr('href'); 
     url = url.replace('/something.example.com','betterexample.no'); 
     $(this).attr('href',url); 
     console.log(url); 
     return false; 

     }); 
+0

並丟失領先/ /返回true,如果你想鏈接被遵循 – mplungjan

+0

我得到「index.html」在我的控制檯,但我需要它被改變輸出「betterexample.no/index.html」 – user2882684

+0

你可以發佈你點擊鏈接的原始網址。我的意思是href值。 –

0

當你使用jQuery生成的attr,您只要有字符串,而不是它是從,所以當你更換它,你只是更換字符串不是鏈路的實際HREF採取的參考。這樣,你就更換HREF中的鏈接:

$('.slavearticle a.headlinelink').click(function() { 
    var url = $(this).attr('href',$(this).attr('href').replace('something.example.com', 'betterexample.no')); 
    console.log(url); 
    return false; 
}); 

你最好用普通的JavaScript這樣做,我認爲:

$('.slavearticle a.headlinelink').click(function() { 
    this.href = this.href.replace('/something.example.com', 'betterexample.no'); 
    console.log(this.href); 
    return false; 
}); 
+0

返回false將取消鏈接! – mplungjan

+0

第一個例子什麼都不做,只能寫到控制檯 – mplungjan

+0

那麼這就是他在做什麼,我們不知道他是否需要它以某種方式。我只是編輯他的代碼,以取代他所問的href。 – dajavax

0

在這裏,我只是更改包含「something.example所有鏈接。 COM」

$('.slavearticle a.headlinelink[href*="something.example.com"]').click(function() { 
    var newUrl = $(this).attr("href").replace("something.example.com","betterexample.no"); 
    $(this).attr('href',newUrl); 
    // do NOT return false if you want the link to work 
}); 

早些時候建議:

$('.slavearticle a.headlinelink').click(function (e) { 
    e.preventDefault(); // stop the link since we navigate 
    var newUrl = $(this).attr("href").replace("something.example.com","betterexample.no"); 
    location = newUrl; 
}); 
0

不知道我是否瞭解所有的要求,但這是你在找什麼? http://jsfiddle.net/cg7m3/

我基本上剛剛加了window.location.href = url;,並且擺脫了替換字符串中的起始正斜槓。

$('.slavearticle a.headlinelink').click(function() { 
    var url = $(this).attr('href'); 
    url = url.replace('something.example.com', 'google.com'); 
    console.log(url); 
    window.location.href = url; 
    return false; 
}); 
+0

發表代碼,如果你寫小提琴 – mplungjan

+0

@mplungjan我的錯,加。 – pringshia

+0

有趣 - 與我的第一個建議相同:) – mplungjan

-2

試試這個,這對我來說

$('.slavearticle a.headlinelink').click(function() { 
    var url = $(this).attr('href'); 
    url = url.replace('something.example.com', 'betterexample.no'); 
    console.log(url); 
    return false; 
}); 
+0

如果除了刪除/ – mplungjan

+0

之外的任何操作,對我來說我已經測試過了。請嘗試上面的例子給我,讓我知道 –

+0

1)它不會改變任何東西2)它無處可去。它所做的只是將更改後的url寫入控制檯 – mplungjan