选择父jquery

时间:2018-04-12 18:23:00

标签: javascript jquery

我是编程新手,我希望你们帮我解决这个问题。我想点击事件class="menu a"上的submenu li a的背景颜色。{/ 1}}。

代码: -

$(document).ready(function(){
  $(".menu").click(function(){
    $(".submenu").hide();
    $(this).children().show();
    });
    $(".submenu li a").click(function(){
    $(".submenu li a").css("color","blue");
    $(this).css("color","red");
    $(this).parent(".menu a").css({"background": "green"});
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="menu"><a href="#">link 1</a>
    <ul class="submenu">
      <li><a href="#">inlink 1</a></li>
      <li><a href="#">inlink 2</a></li>

    </ul>
  </li>
  <li class="menu"><a href="#">link 2</a>
    <ul class="submenu">
      <li><a href="#">inlink 1</a></li>
      <li><a href="#">inlink 2</a></li>

    </ul>
  </li>

</ul>

4 个答案:

答案 0 :(得分:0)

看起来你正试图使用​​它:

$(this).parent('.menu a')

问题是,.menu a不是其父母。只有.menua.menu的孩子(就像.submenu li的叔叔;)。

相反,请使用:

$(this).parent('.menu').children('a')

首先找到父.menu,然后找到它的直接子achildren()(与find()相对)将确保您只获得直接子项,而不是.submenu中的直接子项。

答案 1 :(得分:0)

1。 您需要使用.closest(),因为menu不是submenu li的直接父母

2。 submenu li点击后,首先从其他menu a中移除背景颜色,然后将背景颜色添加到当前点击的父级{{1 }}

工作片段: -

menu a
$(document).ready(function(){
  $(".menu").click(function(){
    $(".submenu").hide();
    $(this).children().show();
  });
  $(".submenu li a").click(function(){
   $('.menu').children("a").css({"background": "white"});
    $(".submenu li a").css("color","blue");
    $(this).css("color","red");
    $(this).closest(".menu").children("a").css({"background": "green"});
  });
});

答案 2 :(得分:0)

使用void Main() { var indexes = new List<int> { 1, 2, 5, 7, 10 }; var orderedProducts = new List<Product>(); orderedProducts.Add(new Product()); orderedProducts.Add(new Product()); orderedProducts.Add(new Product()); orderedProducts.Add(new Product()); orderedProducts.Add(new Product()); //orderedProducts.Add(new Product());//Add this in and you will see a result at index 5 //orderedProducts.Add(new Product()); //orderedProducts.Add(new Product());//7 //orderedProducts.Add(new Product()); //orderedProducts.Add(new Product()); //orderedProducts.Add(new Product());//10 var myProducts = orderedProducts.Where((pr, i) => indexes.Any(x => x == i)).ToList(); } public class Product { } 代替closest

parent

答案 3 :(得分:0)

您可以使用nearest()

来完成此操作
$($(this).closest(".menu a").css({"background": "green"});