jQuery - 删除HTML中的自闭标签

时间:2012-08-31 14:09:25

标签: jquery html replace kentico

我正在为一个网站导航,该网站由几个包含链接列表的jQuery手风琴组成,如下所示:

<ul class="menu">
    <li>
        <h3>Header 1</h3>
        <ul>
            <li class="menuItem">Link 1</li>
            <li class="menuItem">Link 2</li>
            <li class="menuItem">Link 3</li>
        </ul>
    </li>
    <li>
        <h3>Header 2</h3>
        <ul>
            <li class="menuItem">Link 4</li>
            <li class="menuItem">Link 5</li>
            <li class="menuItem">Link 6</li>
        </ul>
    </li>
</ul>

建立网站的CMS由于某种原因将任何空列表设置为自动关闭<li>标记,如下所示:

<ul class="menu">
    <li>
        <h3>Header 1</h3>
        <ul>
            <li class="menuItem">Link 1</li>
            <li class="menuItem">Link 2</li>
            <li class="menuItem">Link 3</li>
        </ul>
    </li>
    <li />
</ul>

我想知道是否有办法使用jQuery从HTML中查找并删除所有<li />标记。谢谢!

编辑:我忘了提,这只出现在IE7中。在IE8 / 9中,浏览器在HTML中有<li></li>,但它不会将这些标记呈现为任何内容。 <li />标签会影响IE7中的布局(它看起来像是一个块元素,所以它正在推动它下面的内容)。

4 个答案:

答案 0 :(得分:6)

$('li:empty')会找到所有空的<li>标记。然后.remove()应该核对它们。

答案 1 :(得分:4)

$("li:empty").remove();

Documentation on :empty selector

答案 2 :(得分:1)

看看这篇文章。我认为这也适用于你的问题。 https://stackoverflow.com/a/1520991/1437243

答案 3 :(得分:0)

出于某种原因,IE6中没有一个修复工作,尽管它们在所有其他浏览器中都有效。为了让所有内容在IE6中运行,我在<li>中添加了一个类,并在正文中使用$('#xyz').remove();来删除标记。