悬停(或不是)时隐藏元素的jQuery目标父对象

时间:2016-08-29 04:29:57

标签: javascript jquery css parent jquery-hover

我正在尝试将一个类(或CSS)添加到a,这是隐藏ul的父级,它会在祖父li悬停时显示。
我无法直接更改代码以获得结果,因此我需要jQuery 代码如下:

HTML

<nav class="main-menu">
  <ul>
    <li>
      <a>
        <ul class="sub-menu">

CSS

.main-menu .sub-menu {display: none;}
.main-menu li:hover .sub-menu {display: block;}
.hovered {color: red;}

这就是我正在尝试使用jQuery,但它不起作用:

的jQuery

jQuery(".nm-main-menu ul.sub-menu).hover(function(){
  jQuery(this).parent().addClass("hovered");
});

这里全是fiddle 也许.hover()不是可行的方式...... 请帮忙。

4 个答案:

答案 0 :(得分:2)

jQuery(".nm-main-menu ul.sub-menu").hover(function(){
  jQuery(this).parent().addClass("hovered");
});

你错过了选择器内的双引号。它正在工作。

小提琴:https://jsfiddle.net/gyowv1dx/1/

答案 1 :(得分:1)

你在jquery选择器的最后错过了双引号。你也可以通过使用$来访问jquery。 这是修改过的小提琴

Working Fiddle

$(".main-menu ul.sub-menu").hover(function(){ $(this).parent().addClass("hovered"); });

答案 2 :(得分:0)

$(".nm-main-menu ul.sub-menu").hover(function(){
  $(this).parent().addClass("hovered");
});

使用$代替jQuery而错过双引号

答案 3 :(得分:0)

不仅缺少双引号而且错误地将类名.nm-main-menu放在.main-menu上。确定您应该按console.logalert进行测试

jQuery(".main-menu ul.sub-menu").hover(function(){
        console.log("Working"); //alert("Working");
        jQuery(this).parent().addClass("hovered");
});