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

时间:2011-03-17 15:55:28

标签: jquery html

所以我想要做的就是删除所有HTML表格标签元素,只保留链接标签。

<table border="0" cellpadding="1" cellspacing="0">
<tbody><tr valign="top"><td class="headlines">•</td><td class="headlines"><a href="" target="_top">SOME TEXT</a></td></tr>
</tbody></table>

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

有什么想法吗?

6 个答案:

答案 0 :(得分:4)

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

有关新问题的解决方案,请参阅@T.J.'s answer


用 - 喘气,震惊恐怖 - vanilla JavaScript来做!

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

$headlines.text(replaceText);

或者,语法略显性感:

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

答案 1 :(得分:1)

更新:哇,你完全通过编辑更改了问题。完全。

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

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

Live example

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

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

Live example


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

您可以使用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
});

Live example

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

答案 2 :(得分:0)

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

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

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

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

    $(":contains('•')").each(function() {
    var text = $(this).text();
    text.replace(/•/gi, ""))
    $(this).text(text);
    });

答案 3 :(得分:0)

$("<div>"+$('table a').text()+"</div>").insertAfter('#whereveryouwant");

答案 4 :(得分:0)

var $myTable = $('#myTableId'); //Add id="myTableId" to the table you want select
$myTable.replaceWith($myTable.children('a').wrapAll('<div></div>'));

答案 5 :(得分:0)

$('.headlines a').parent().html();