如何使用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();