jQuery删除除了Anchors之外的所有HTML标记

时间:2010-06-21 08:53:57

标签: jquery html

目前,我有这一行:

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

但是,我想要一句“if子句”的话来说,

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

我认为没有人有任何想法?

[编辑]:我想我可能要做一个“FOR EACH”循环......我想...... [/编辑]

^。^

3 个答案:

答案 0 :(得分:4)

jQuery有“:not”伪选择器。

$(':not(a)', this).remove()

答案 1 :(得分:2)

replace可以将函数作为第二个参数

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

我没有使用十六进制编码的字符,因为它更容易以这种方式阅读。

答案 2 :(得分:2)

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

如果您要保留“a”代码,请将正则表达式从[a-z]更改为[b-z]