2012-06-18 4 views
1

У меня есть несколько гиперссылок на моем сайте. Я хочу удалить тег href html, если они совпадают с заданным условием.Удаление JQuery и изменение html-тегов

Пример

если HREF является example.com, то гиперссылка должна быть растворена и <a></a> тег должен исчезнуть

Я использую следующее заявление,

$("a[href='http://www.example.com']").removeAttr("href"); 

HREF собирается удаляться, но <a> все еще там.

ответ

1

Самое ценное способ сделать это с contents и unwrap:

$("a[href='http://www.example.com']").contents().unwrap(); 

Это говорит:

  • найти все ссылки, которые соответствуют селектору
  • получить все свои дочерние узлы
  • разворачивать дочерние узлы из их родителей, т.е.заменить a элемент с его дочерними узлами
1

Чтобы удалить элемент анкер попробовать это:

$("a[href='http://www.example.com']").remove(); 

Для получения дополнительной информации см .remove() doco.

EDIT: Для того, чтобы заменить анкерного элемента с его содержанием, попробуйте следующее:

$("a[href='http://www.example.com']").replaceWith(function() { 
    return $(this).html(); 
}); 

.replaceWith() method делает то, что вы могли бы ожидать. Если вы передадите ему функцию, то эта функция будет вызываться для каждого соответствующего элемента, причем this является текущим элементом, который будет заменен возвратом функции.

+0

в порядке, но текст гиперссылки не должен быть удален – lgt

+0

@lgt увидеть мой ответ тогда;) – Alnitak

+0

или моих обновленного ответ. (Извините, изначально я неправильно понял, о чем вы спрашивали. На самом деле, я думаю, что ваш вопрос по-прежнему немного неясен - вы можете отредактировать его, чтобы сделать его более очевидным, чтобы вы сохраняли содержимое каждого анкера.) Но я рекомендую ответ Loneomeday. – nnnnnn

1
$("a[href='http://www.example.com']").remove(); 
$("a[href='http://www.example.com']").unwrap(); -> also check this :D 
3

Чтобы удалить весь элемент, используйте .remove.

$("a[href='http://www.example.com']").remove(); 
2

Чтобы сохранить текст ссылки, но удалить саму ссылку:

$("a[href='http://www.example.com']").replaceWith(function() { 
    return $(this).text(); 
}); 

использовать .html() вместо этого, если есть и другие HTML теги в ссылке, которые вы хотите сохранить.

+1

Было бы лучше сделать 'return this.childNodes;' Это было бы быстрее и избежать потери обработчиков данных/событий. – lonesomeday

+0

@lonesomeday nice one - это определенно лучше, чем '.html()', и проще, чем клонирование их тоже! – Alnitak

0

Вы можете удалить весь тег:

$("a[href='http://www.example.com']").find().remove(); 
Смежные вопросы