jquery - 使用 jquery 删除没有 <dd> 的 <dt>

标签 jquery html jquery-selectors

我有一个定义列表,我需要删除所有 <dt>没有任何 <dd> 的标签 在这种特殊情况下:Herramientas、Suplementos、Repuestos、Herramientas 和 Anti pinchaduras

列表可能因库存而异(任何类别 <dt> 都可能为空)

我试过了

$('dt+dt').each(function() {
    $(this).remove();
});

但是它删除了“partes”而不是“herramientas”并且没有删除“supplementos” 也试过 :empty但似乎没有 dd 的 dt 不被认为是空的......

一定有一个非常简单易行的解决方案,但我的大脑拒绝看到它:-(

示例列表:

<dl>
    <dt>Bicicletas</dt>
        <dd><a href="/bicicletas/">Bicicletas</a> (70)</dd>
    <dt>Accesorios</dt>
        <dd><a href="/accesorios/bocinas/">Bocinas, timbres y cornetas</a> (9)</dd>
        <dd><a href="/accesorios/transporte/">Transporte y protección</a> (1)</dd>
    <dt>Herramientas</dt>
    <dt>Partes</dt>
        <dd><a href="/partes/cubiertas/">Cubiertas</a> (2)</dd>
        <dd><a href="/partes/asientos/">Asientos</a> (5)</dd>
        <dd><a href="/partes/grips/">Puños / grips</a> (1)</dd>
    <dt>Articulos de indumentaria</dt>
        <dd><a href="/indumentaria/jerseys/">Jerseys / Remeras</a> (1)</dd>
        <dd><a href="/indumentaria/cascos/">Cascos</a> (3)</dd>
    <dt>Suplementos</dt>
    <dt>Repuestos</dt>
    <dt>Herramientas</dt>
    <dt>Anti pinchaduras</dt>
</dl>

最佳答案

$('dt').filter(function(){
                     return !($(this).next().is('dd'));
               }).remove();

在此处查看实际效果:http://jsbin.com/isute


这也可以,但是很奇怪,不会选择最后一个 <dt> ,所以我添加了另一个选择器:

$('dt + dt').prev().add('dt:last-child').remove();

即:全选<dt>一个接一个<dt> ,选择上一个 dt,并添加最后一个。


另一种选择:

var good = $('dd').prev('dt');
$('dt').not(good).remove();

not can take an array ,所以这有效。这也可以写成 $('dt').not($('dd').prev('dt')).remove();,但是非常难看。

关于jquery - 使用 jquery 删除没有 <dd> 的 <dt>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1957675/

相关文章:

javascript - 如何在 jquery 链接中的选择器之后使用多个 .find()?

html - 必须双击 li 打开我的链接

php - 如何在网页和实际程序之间进行交互

javascript - jQuery .insertAfter 仅使用类选择器一次

javascript - 填充下拉列表选择

jquery - 使用 jQuery NOT 选择器排除具有特定子元素的元素。

jQuery .add 方法

javascript - 如何通过单击链接在 Bootstrap 模式中打开特定的可折叠面板

jquery - 缩放和平移 SVG 的插件

javascript - 当组件在多个选择中呈现时,如何取消选择第一个选项?