jquery - 使用 jQuery 选择器选择有 child 但没有孙子的元素

标签 jquery css css-selectors

我正在尝试选择有子项的列表项,但不选择作为孙项的列表项。考虑以下结构:

<ul id="parent">
   <li>
      <a href="#"></a>
      <ul> <!-- add open class -->
        <li><a href="#"></a></li>
        <li>
            <a href="#"></a>
            <ul>  <!-- do not add any class -->
                <li><a href="#"></a></li>
            </ul>
        </li>
      </ul>
   <li>
</ul>

我像这样隐藏所有子列表:

#parent li > ul {display:none}

当我将鼠标悬停在任何顶级列表项上时,我想为其子项添加一个类 <ul>但不是它的孙子<ul> .所以在上面的树中我写了 <ul>需要添加一个类。

以下选择所有包含子项的列表项:

$("#parent li:has(ul)").hoverIntent( showSubNav, hideSubNav );

我需要这个来只选择有 child 的顶级列表项,但我不希望当我将鼠标悬停在也有 child 的孙子列表项上时触发此功能。

我怎样才能做到这一点?

最佳答案

使用后代选择器。

$("#parent > li:has(ul)").hoverIntent( showSubNav, hideSubNav );

这只会做 $.hoverIntent()关于直系子女li有 child 的ul .

如果要显示相邻ul当您将鼠标悬停在 <a> 上时,然后是:

$('#parent > li > a').hover(function() {
    $(this).next('ul').addClass();
});

悬停在顶层 <li>然后添加一个类到它的立即<ul> child :

$('#parent > li').hover(function() {
    $(this).child('ul').addClass();
});

关于jquery - 使用 jQuery 选择器选择有 child 但没有孙子的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196518/

相关文章:

javascript - 成功渲染自定义指令后加载一些函数

html - 自动缩放元素以适应视口(viewport)/设备方向

html - 三列布局设计的第 n 个子属性?

CSS :first-of-type isn't working

css - CSS 中的正则表达式 - 样式表

javascript - Jquery Datatable - 将值从一个 "Data"元素传递到另一个元素

javascript - 嵌套 ul 显示在 anchor 单击上

php - 登录后重定向到原始页面(Codeigniter)

html - 如何将 3 个水平排列的图像在页面上居中?

html - 里面有 "/"的 div,相当于 css?