2014-09-10 81 views
-4

这似乎并不奏效,我得到了.remove()线的Uncaught Type错误:如何从HTML字符串中删除元素?

JS:

var str = $("a").html(); 
var $html = $.parseHTML(str); 
$("i",$html).remove(); 

$("div").html($html); 

HTML:

<a href="#">Hello <i>Bob</i></a> 
<div></div> 

如何得到这个工作?

+2

你想完成什么? – DeFeNdog 2014-09-10 18:33:34

+0

看起来很简单,但要确保您的jQuery库已正确导入。如果我对jQuery的引用关闭,我通常会得到类似的错误。 – ckpepper02 2014-09-10 18:34:52

回答

2

只需使用.text()函数即可删除HTML标签。

var str = $("a").text(); 

$("a").text(str); 

这将导致:

<a href="#">Hello Bob</a> 

例子:http://jsfiddle.net/3s1c55w2/

它是如何工作的:

  1. $("a").text();将只检索元素的文本,所以在你的它将返回Hello Bob
  2. 一旦您检索Hello Bob,只需使用.text(str)再次设置a标记文本值,其中str是没有html标记的值。
+0

似乎人们无法理解这个问题,请参阅编辑变量使用 – 2014-09-10 18:41:25

+0

您的回答不起作用。 – 2014-09-10 18:43:42

+0

我提供的jsFiddle清楚地表明它确实如此。我会检查你的jQuery实现是否安装正确。 – Axel 2014-09-10 18:45:27

0

也许他试图从每个锚点删除i标签。

http://jsfiddle.net/1fytum86/

$("a").each(function(index) { 
    var str = $(this).text(); 
    $(this).html(str); 
}); 

无论如何,这可能是他得到一个类型错误,因为parseHTML()将字符串解析为DOM节点的数组。祝你好运!

0

如果你想删除的斜体字并留下文字:

$("a").html($("a").html().replace(/<\/?i>/g, "")); 

否则,使用或者删除或者断开其他的答案将是合适的。