JQUERY:父选择器不起作用

时间:2015-06-18 06:08:14

标签: jquery parent-child



$(document).ready(function() {
  $(".lvl_0 ul").mouseover(function() {
    $(".subnav:parent > a span").addClass("subOpen");

  });

  $(".lvl_0 ul").mouseout(function() {

    $(".subnav:parent > a span").addClass("subOpen");

  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="tile_nav">
  <li class="lvl_0">
    <a href="#">Tile
      <span>---</span>
    </a>

    <ul class="subnav">
      <li><a href="#">XXXXX <span>---</span></a>
      </li>
      <li><a href="#">XXXXX <span>---</span></a>
      </li>
    </ul>

  </li>

  <li class="lvl_0"><a href="#">Tile</a>
  </li>
  <li class="lvl_0"><a href="#">Tile</a>
  </li>
</ul>
&#13;
&#13;
&#13;

请帮忙,为什么这个:parent选择器不与直接孩子合作。将鼠标悬停在子<ul>上时,应该将一个类添加到父<span>的{​​{1}}

5 个答案:

答案 0 :(得分:1)

使用parent()获取父元素:

logstash agent -f D:/cloud/logstash-1.4.2/tc-log.conf -l D:/cloud/logstash-1.4.2/logs/lslog.log –verbose

您也可以使用hover

$(document).ready(function () {
    $(".lvl_0 ul").mouseover(function () {
        $(this).parent().children('a').addClass("subOpen");

    });

    $(".lvl_0 ul").mouseout(function () {

        $(this).parent().children('a').addClass("subOpen");
    });
});

答案 1 :(得分:1)

To select parent in jquery you can use parent(), parents(), closest(). In which way you may like.

$(document).ready(function () {
    $(".lvl_0 ul").mouseover(function () {
        $(this).parent().children('a').find('span').addClass("subOpen");

    });

    $(".lvl_0 ul").mouseout(function () {

        $(this).parent().children('a').find('span').addClass("subOpen");
    });
});

答案 2 :(得分:1)

为什么您的代码不起作用

<强> :parent

  

选择至少有一个子节点(元素或文本)的所有元素。

您需要父元素和带有子节点的元素。

因此,请使用.closest().parent()

$(' > a span',$('.subnav').closest('ul')).addClass("subOpen");

答案 3 :(得分:0)

在您的情况下,您正在寻找ul元素的先前兄弟,也使用hover / mouseenter-mouseleave事件

$(document).ready(function () {
    $(".lvl_0 ul").hover(function () {
        $(this).prev('a').find('span').addClass("subOpen");
    }, function () {
        $(this).prev('a').find('span').removeClass("subOpen");
    });
});

答案 4 :(得分:0)

您需要使用jQuery parent method选择当前元素的父元素 试试这个fiddle

$(this).parent().addClass("subOpen");