2012-07-28 58 views
0

我有一些Javascript可以在頁面中找到包含「google」的所有超鏈接,並將url的開頭更改爲另一個url。jQuery - 添加類到使用'each'的超鏈接時遇到問題

我想添加一個類到這個受影響的鏈接,但是我在JS控制檯中收到了很多'undefined'錯誤。我試過警告($(this).innerHTML)),它顯示了超鏈接的內容 - clases和whatnot。但由於某種原因,我無法追加課程。我也嘗試使用this.className + =「socks」。 這也會導致一個未定義的錯誤。我想我錯過了一些簡單的事情!

也有一種在搜索中使用正則表達式的方法,我對Javascript新穎。

這裏是我的代碼:

$("a[href*='google']").each(function(){ 
     this.href = this.href.replace('http://www.google.co.uk','http://www.ask.com'); 
     this.href = this.href.replace('http://www.google.com','http://www.ask.com'); 
     $(this).addClass("socks"); 
    }); 

非常感謝您的幫助!

+1

您確定未定義的錯誤來自這些代碼行嗎? – Lix 2012-07-28 20:35:40

+0

我已經看到了這一點,事實證明,這些錯誤不是由這段代碼引起的。忘記清理JS控制檯的歷史。 代碼仍然沒有添加新的類到超鏈接 – Chris 2012-07-28 20:44:19

+0

您發佈的代碼應該正常工作。我看不出有什麼問題。你確定沒有其他隱藏的錯誤嗎? – Lix 2012-07-28 20:46:22

回答

2

有沒有錯誤這段代碼中,我可以看到:

http://jsfiddle.net/p7Sgj/

看到這一點。

+0

爲什麼你會這樣看起來空白? :P – Lix 2012-07-28 20:45:52

+0

大聲笑,那麼沒有什麼需要:D它是一個相當簡單的腳本。 – 2012-07-30 14:14:56

+0

其實我是在談論讓鏈接變白:P – Lix 2012-07-30 14:23:18

2

嘗試,而不是使用this.href

$("a[href*='google']").each(function(){ 

    var href = $(this).attr('href'); 
    href.replace('http://www.google.co.uk','http://www.ask.com'); 
    href.replace('http://www.google.com','http://www.ask.com'); 
    $(this).attr('href', href); 
    $(this).addClass("socks"); 
}); 

。我猜你的代碼沒有達到addClass部分...

此外,使用firebug(在firefox的情況下)或鉻開發工具(在鉻的情況下)進行調試。你可以簡單設置斷點,添加監視,等等

(在這種情況下,請確保您使用jQuery的所謂非精縮版,便於調試)

2

如果你的HTML代碼

<a href="http://www.google.co.uk">Hello</a> 
<a href="http://www.google.com">World</a> 

而且你的CSS是

.socks { 
    color:#f00; 
} 

那麼你的代碼應該是工作的罰款。

http://jsfiddle.net/k93TZ/2/ 在這裏工作。

它可能是你的html或css代碼。