jQuery — проблема с добавлением класса к гиперссылке с использованием «каждого»

У меня есть Javascript, который находит все гиперссылки на странице, содержащие, например, «google», и изменяет начало URL-адреса на другой URL-адрес.

Я пытаюсь добавить класс к этой затронутой ссылке, однако получаю много «неопределенных» ошибок в консоли JS. Я пробовал alert($(this).innerHTML)), который показывал содержимое гиперссылки - clases и еще много чего. Но по какой-то причине я не могу добавить класс. Я также пытался использовать 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
Зачем делать так, чтобы он выглядел пустым? :П - person Lix; 29.07.2012
comment
лол, ну ничего не нужно было :D это был довольно простой скрипт. - person Jamie Hutber; 30.07.2012
comment
На самом деле я говорил о том, чтобы сделать ссылки белыми :P - person Lix; 30.07.2012
comment
ааааааааааааа, ты меня понял - 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