【问题标题】:I want to add class to parent menu when clicked on sub menu单击子菜单时,我想将类添加到父菜单
【发布时间】:2020-11-02 21:57:58
【问题描述】:

我为我的功能编写了如下代码

HTML::

<ul class="parentUL">
    <li>
      <a class="parentMenu">
        <span>Parent Menu</span>
      </a>
      <ul class="submenu">
        <li>
          <a (click)="addClass(submenu.url)">Sub Menu 1</a>
        </li>
         <li>
          <a (click)="addClass(submenu.url)">Sub Menu 2</a>
        </li>
      </ul>
    </li>
  </ul>

CSS 类 ::

.active{
  color:red;
}

Ts 文件功能::

addClass(url){

  // For add the class to parent menu
  $(this).closest(".parentUL").find('a:first').addClass('active');

  // For the another functionality

   this.router.navigateByUrl(url);

}

我想在函数点击时添加.active 类。它没有为我添加课程。

【问题讨论】:

  • 你从哪里得到this?在这里传递,即:(click)= addClass(this)。另外,然后在 js 中更改 addClass(el){$(el).closest(".parentUL")....
  • 如果你使用 angular 那么为什么你使用 sugin jquery 添加类你可以简单地使用ngClass
  • 请参考更新后的代码。我不想使用 ngClass。我想在调用这个 addClass 函数时添加类

标签: jquery css angular


【解决方案1】:

当你从点击事件中调用函数时,jquery 不知道this 指的是什么。所以你必须告诉它。

onclick="addClass(this)"

function addClass(obj) {
  $(obj).closest(".parentUL").find('a:first').addClass('active');
}

演示

.active {
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="parentUL">
  <li>
    <a class="parentMenu">
      <span>Parent Menu</span>
    </a>
    <ul class="submenu">
      <li>
        <a onclick="addClass(this)">Sub Menu 1</a>
      </li>
      <li>
        <a onclick="addClass(this)">Sub Menu 2</a>
      </li>
    </ul>
  </li>
</ul>
<script>
  function addClass(obj) {
    $(obj).closest(".parentUL").find('a:first').addClass('active');
  }
</script>

【讨论】:

  • 但是我已经在传递带有另一个功能的函数的 url 参数,所以我如何传递 Jquery 类添加的参数。或任何其他方式我可以做到这一点?像 ngOnInit() 还是其他?
  • @SamK 你不能只做addClass(submenu.url, this)addClass(url,obj){
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多