简体   繁体   English

在子li上设置父li的样式:悬停

[英]Style parent li on child li:hover

I've been digging all day to find out how to style the parent li when hovering on a child li element. 我整天都在努力寻找将鼠标悬停在子li元素上时如何设置父li的样式。

eg 例如

<ul>
<li> Parent Element </li>
    <ul>
    <li> Child Element </li>
    </ul>
<ul>

I've found countless posts asking how to do it in CSS to find it's not possible. 我发现无数的帖子问如何在CSS中做到这一点,以发现它是不可能的。 People say "you can do it with Javascript" but never say how! 人们说“您可以使用Javascript做到这一点”,但从来没有说过!

I'm somewhat of a Javascript newb so some help would be much appreciated. 我有点像Javascript newb,所以可以得到一些帮助。

Thanks. 谢谢。

EDIT: Here is the outputted source code. 编辑:这是输出的源代码。 I'm not sure if it will affect the selectors required for the Javascript/jQuery because, as you can see it adds additional info into the class name ie "page-item-9" on top of the class name there already ("page_item"). 我不确定它是否会影响Javascript / jQuery所需的选择器,因为如您所见,它已将附加信息添加到类名中,即已经在类名顶部添加了“ page-item-9”(“ page_item “)。 This is added by Wordpress but I've only needed to use "page_item" to reference it in the CSS. 这是由Wordpress添加的,但我只需要在CSS中使用“ page_item”来引用它。

    <ul class="pagenav">

    <li class="page_item page-item-12 current_page_item"><a href="#" title="Home">Home</a></li>
    <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
    <li class="page_item page-item-4"><a href="#" title="Corporate">Corporate</a></li>
    <li class="page_item page-item-5"><a href="#" title="Fashion, Hair &amp; Beauty">Fashion, Hair &#038; Beauty</a></li>

    <li class="page_item page-item-6"><a href="#" title="Live Music">Live Music</a>

        <ul class='children'>
        <li class="page_item page-item-11"><a href="#" title="Music 1">Music 1</a></li>
        </ul>

    </li>

    <li class="page_item page-item-7"><a href="#" title="Weddings">Weddings</a>

        <ul class='children'>
        <li class="page_item page-item-10"><a href="#" title="Wedding 1">Wedding 1</a></li>
        </ul>

    </li>

    <li class="page_item page-item-8"><a href="#" title="Miscellaneous">Miscellaneous</a></li>
    <li class="page_item page-item-9"><a href="#" title="Contact">Contact</a></li>

    </ul>

EDIT 2: 编辑2:

Here is what I have inside my header.php file using advice given. 这是我使用给定建议的header.php文件中包含的内容。

<style type="text/css">
.highlighted { background:#000; }
</style>


<script type="text/javascript">
$(function() {
    $('.page_item .page_item').mouseenter(function() {
         $(this).closest('.page_item').addClass('highlighted');
    }).mouseleave(function() {
         $(this).closest('.page_item').removeClass('highlighted');
    });
 });
 </script>

If there is nothing wrong with that it must be issues with Wordpress. 如果没有问题,那么Wordpress一定有问题。 The code works fine without the annoying Wordpress hierarchy. 无需烦人的Wordpress层次结构,代码即可正常工作。

The javascript: JavaScript:

<!-- add the following line only if you are not already using jQuery: -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $('.page_item .page_item').mouseenter(function() {
        $(this).parent().closest('.page_item').addClass('highlighted');
    }).mouseleave(function() {
        $(this).parent().closest('.page_item').removeClass('highlighted');
    });
</script>

What this does is that when the mouse enters one of the child <li> elements, this adds the highlighted class to the parent <li> . 这是因为当鼠标进入子<li>子元素之一时,这会将highlighted类添加到父<li> And when the mouse leaves, the class is removed. 当鼠标离开时,该类将被删除。 So you just have to create a highlighted class now :) 因此,您只需要立即创建一个highlighted类即可:)

$(this).closest('.page_item') just searches for the closest parent element which matches the .page_item selector (so, the closest parent with a page_item class). $(this).closest('.page_item')仅搜索与.page_item选择器匹配的最接近的父元素(因此,具有page_item类的最接近的父元素)。

If you have checked that the right class is applied to the element I'm pretty sure that you just aren't specifying your styles enough. 如果您检查了将正确的类应用于该元素,那么我很确定您只是没有充分指定样式。 Specify as far back as you can, including the ul and li parents of the style you want to set. 尽可能远地指定,包括您要设置的样式的ul和li父母。 This is just because Wordpress uses such a long (and annoying imo) hierarchy for these styles. 这仅仅是因为Wordpress对这些样式使用了很长(很烦人的imo)层次结构。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM