JQuery删除某个标记的所有出现

时间:2012-02-21 14:13:28

标签: jquery xhtml

由于计算复杂,我最终得到了这样的内容。

<table>
    <tr>
       <div><td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td></div>
    </tr>
    <tr>
       <div><td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td></div>
    </tr>
    <tr>
       <div><td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td></div>
    </tr>
</table>

我们如何删除所有<div></div>代码,因为它们会干扰表格结构?

4 个答案:

答案 0 :(得分:4)

正如评论中已经提到的,你不能使用jQuery / JavaScript来可靠地解决这个问题。原因是它是无效的HTML,最终结果完全取决于浏览器的恢复方法。

例如,您在那里的标记将使用WebKit解析如下(在最新的Chrome中测试):

<div></div><div></div><div></div>
<table>
  <tbody>
    <tr>
       <td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td>
    </tr>
    <tr>
       <td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td>
    </tr>
    <tr>
       <td>Blah</td><td>Blah</td><td>Blah</td><td>Blah</td>
    </tr>
  </tbody>
</table>

可能并非所有浏览器都会出现此行为,有些可能会以不同方式解析它,因为没有正确的方法来解析错误的标记。修复此问题的来源(生成内容的位置)。

答案 1 :(得分:2)

试试这个?我想,你是想删除div?

$('td').parents('div').remove();

或使用jquery unwrap

http://api.jquery.com/unwrap/

- UPDATE--不要认为删除或解包对我有用,在这种情况下,浏览器肯定似乎是从表中踢div并在文档树的末尾添加 。尝试修复HTML生成逻辑以删除div,如果不是尝试向div添加一个类,然后添加一个jquery片段来隐藏或删除具有该特定类的div

答案 2 :(得分:0)

尝试:

$('div').remove();

内容仍然是......

http://jsfiddle.net/FPysK/

答案 3 :(得分:0)

这可能有用: 为表

分配一个id
var content=$("#table_id").html();
content=content.replace('<div>','');
content=content.replace('</div>','');
$("#table_id").html(content);