jquery - 在 CSS 中选择子级的父级

标签 jquery html css parent

通过下面的代码,我希望能够将 CSS 样式应用到列表中的父 li class="parent" 项。但仅当用户将鼠标悬停在该特定父项的子 li class="child" 项上时。

据我所知,仅使用 CSS 是不可能的,但是有人知道潜在的 Javascript 解决方案(最好使用 jQuery,因为我们已经在我们的网站上使用了这个库)

谢谢!

<ul>
    <li class="parent"><a href="URL" >Main Link</a>
         <ul class="sub-menu">
             <li class="child"><a href="URL" >Link</a></li>
         </ul>
    </li>
</ul>

最佳答案

你没听错——CSS 不允许你在 DOM 树上向上遍历,只能向下遍历。例如,您可以选择 child ,但不能选择 parent 。

这是使用 jQuery 实现此目的的一种方法:

$("li.child").on("hover", function(){
    $(this)
        .closest("li.parent")
        .css({
            // styling here
        });
});

我们要做的就是选择带有 child 类的 li 元素。我们将 hover 事件绑定(bind)到它,并在该事件发生时触发一个函数。该函数找到具有 parent 类的子 li 最接近的父级,然后我们更改其 CSS。

更多关于on() here , closest() herecss() here .

另请记住,对于早期版本的 jQuery,您可以使用 bind()delegate()

编辑:要在鼠标悬停鼠标移出时更改:

$("li.child").on("mouseover mouseout", function(){
    $(this)
        .closest("li.parent")
        .toggleClass("myClass");
});

您在这里所做的就是在 CSS 中定义类 myClass。如果元素上尚不存在该类,则 toggleClass 添加该类,否则将其删除。这是不言自明的。这样,您可以节省一些字节并使用更首选和推荐的 jQuery。

关于jquery - 在 CSS 中选择子级的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9425133/

相关文章:

float 布局中的 CSS 全高固定列

javascript - 在其自己的工具提示上单击获取元素

jquery - 表单数据未在ajax调用中传递

html - 未知的元素样式

javascript - 如何使用此复选框变量将复选框变量从 java 方法传递到 JavaScript 方法,但我没有得到正确的输出

java - 用 Java 解析 HTML 网页

html - 在现有导航栏中创建下拉菜单

html - 标题为全宽但内容受限时的 CSS 网格

php - 使用 AJAX/PHP/mysqli 创建加载更多按钮

javascript - 在 Angular 中刷新页面后如何检索本地存储值?