jQuery - Проблем при добавяне на клас към хипервръзка, използвайки 'each'

Имам някакъв Javascript, който намира всички хипервръзки в страница, които съдържат например „google“, и променя началото на url на друг url.

Опитвам се да добавя клас към тази засегната връзка, но получавам много „недефинирани“ грешки в JS конзолата. Опитах alert($(this).innerHTML)), който показваше съдържанието на хипервръзката - класове и какво ли още не. Но по някаква причина не мога да добавя клас. Също така се опитах да използвам 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");
  });

Благодаря много за всяка помощ!


person Chris    schedule 28.07.2012    source източник
comment
Сигурни ли сте, че недефинираните грешки идват от тези редове код?   -  person Lix    schedule 29.07.2012
comment
Разгледах това и се оказа, че грешките не са причинени от тази част от кода. Забравих да изчистя историята на JS конзолата. Кодът все още не добавя нов клас към хипервръзката   -  person Chris    schedule 29.07.2012
comment
кодът, който сте публикували, трябва да работи добре. Не виждам нищо лошо в това. Сигурни ли сте, че не се крият други грешки?   -  person Lix    schedule 29.07.2012
comment
Нещо друго трябва да пречи на процеса по някаква причина. Ще стигна до дъното. наздраве   -  person Chris    schedule 29.07.2012


Отговори (3)


Няма грешка с този код, който виждам:

http://jsfiddle.net/p7Sgj/

Виж това.

person Jamie Hutber    schedule 28.07.2012
comment
Защо го правите така, че да изглежда празен? :P - person Lix; 29.07.2012
comment
хаха, нямаше нужда от нищо :D беше доста прост скрипт. - person Jamie Hutber; 30.07.2012
comment
Всъщност говорех да направя връзките бели :P - person Lix; 30.07.2012
comment
arghhhhhhhhhhhh разбра ме :p - person Jamie Hutber; 30.07.2012

опитвам

$("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");
});

вместо да използвате this.href. Предполагам, че вашият код не достига частта addClass...

Също така използвайте firebug (в случай на firefox) или инструменти за разработчици на chrome (в случай на chrome) за отстраняване на грешки. Можете просто да зададете точка на прекъсване, да добавите часовници и т.н.

(В такъв случай се уверете, че използвате така наречената неминимизирана версия на jQuery за по-лесно отстраняване на грешки)

person Aadaam    schedule 28.07.2012

Ако вашият 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 код.

person Overcode    schedule 28.07.2012