如何使用jQuery删除HTML和特殊字符?

所以我想要做的是删除所有HTML表标记元素,留下链接标记。

SOME TEXT

将链接文本包装到段落标记中的div或位置会很好。

有什么想法吗?

在发布此答案后,问题被更改为提出完全不同的问题。

请参阅@ TJ的答案以获得新问题的解决方案。


这样做 – 喘气,震惊恐怖 – 香草JavaScript !

 var $headlines = $('.headlines'), headlineText = $headlines.text(), replaceText = headlineText.replace(/•/g, ''); $headlines.text(replaceText); 

或者,语言略显性感:

 $('.headlines').text(function (index, text) { return text.replace(/•/g, ''); }); 

更新 :哇,你完全改变了你的编辑问题。 完全。

您可以在新问题中处理表格,将表格中包含的所有链接放入一个新段落中,如下所示:

 $('table').each(function() { var $thisTable = $(this), links = $thisTable.find('a'), newPara; $thisTable.parent().append($("

").append(links)); $thisTable.remove(); });

实例

或者,如果您希望每个链接都在自己的段落中(可能更好):

 $('table').each(function() { var $thisTable = $(this), $parent = $thisTable.parent(), links = $thisTable.find('a'); links.each(function() { $parent.append($("

").append(this)); }); $thisTable.remove(); });

实例


原始答案,现在无关紧要:

你可以使用empty

 $(".headlines").empty(); 

…完全清空匹配元素。

或者如果你想有选择地删除开头的,你可以使用html并传入一个函数:

 $(".headlines").html(function(index, html) { if (html.substring(0, 1) === "•") { html = html.substring(1); } return html; }); 

或者也许是*和之后的任何空格:

 $(".headlines").html(function(index, html) { return html.replace(/^• */, ''); // A `•` at start of string // followed by zero or more spaces }); 

实例

…但是如果headlines元素将具有复杂的嵌套结构,并且在它们上面有事件处理程序等,则不要执行后者中的任何一个(尽管如此,它对于基本单元格来说很好)。

您的代码有效,但它将删除整个元素。 empty将删除所有子节点,包括文本或嵌套元素。

如果您只想从包含点的元素中删除所有文本,您可以执行以下操作:

 $(":contains('•')").text(); 

如果你只是想摆脱这些点并留下其他一切:

  $(":contains('•')").each(function() { var text = $(this).text(); text.replace(/•/gi, "")) $(this).text(text); }); 
 $("
"+$('table a').text()+"
").insertAfter('#whereveryouwant");
 var $myTable = $('#myTableId'); //Add id="myTableId" to the table you want select $myTable.replaceWith($myTable.children('a').wrapAll('
'));
 $('.headlines a').parent().html();