JQuery удалить все теги HTML, за исключением якорей - PullRequest
3 голосов
/ 21 июня 2010

В настоящее время у меня есть эта строка:

this.html(this.html().replace(/\x3C\x2F?[^\x3E]+\x3E/gi, ''));

Но я бы хотел сказать что-то вроде "условия if",

IF (this.tag = "<a") {
  do nothing
} ELSE {
  remove tag
}

Не думаю, что у кого-нибудь есть идеи?

[РЕДАКТИРОВАТЬ]: Я думаю, что мне, возможно, придется сделать цикл "ДЛЯ КАЖДОГО" ... Я думаю .... [/ EDIT]

^. ^

Ответы [ 3 ]

4 голосов
/ 21 июня 2010

jQuery имеет псевдо-селектор ": not".

$(':not(a)', this).remove()
2 голосов
/ 21 июня 2010
this.html(this.html().replace(/<\/?([b-z]+)[^>]*>/gi, function(match, tag) { 
  return (tag === "a") ? match : ""; 
})); 

Если вы хотите оставить теги «а» на месте, измените регулярное выражение с [a-z] на [b-z]

2 голосов
/ 21 июня 2010

replace может принимать функцию в качестве второго параметра

this.html(this.html().replace(/<\/?([a-z]+)[^>]*>/gi, function(match, tag) {
  return (tag.toLowerCase() === "a") ? match : "";
}));

Я не использовал шестнадцатеричные закодированные символы, потому что так легче читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...