仅在'active'类时添加前缀



我无法弄清楚我正在尝试侦听,当列表项更改为"活动"类时,它会在列表项内的链接前面附加一个 span 元素。

我的网页是

<ul>
  <li class="active">
    <a href="#when">When should I water my terrarium?</a>
  </li>
  <li><a href="#where">Where did the bugs come from?</a></li>
</ul>

我的jQuery是

jQuery('.cat-sidebar .widget_text li').each(function() {
if(jQuery(this).hasClass('active')) {
    jQuery('.cat-sidebar .widget_text li a').prepend('<span><i class="fas fa-angle-double-right"></i></span>');
} 
});

我将如何正确执行此操作,以便 li 类处于活动状态时的最终结果如下所示

<ul>
  <li class="active">
    <a href="#when">
      <span><i class="fas fa-angle-double-right"></i></span> 
      When should I water my terrarium?
    </a>
  </li>
  <li><a href="#where">Where did the bugs come from?</a></li>
</ul>

不确定为什么要循环,只需使用选择器即可

jQuery('.cat-sidebar .widget_text li.active a').prepend(...)

但是你的代码的问题在于你选择了所有的元素,而不是使用你正在使用的元素。

jQuery('.cat-sidebar .widget_text li')
  .each(function(){
    if(jQuery(this).hasClass('active')) {
      jQuery(this)
        .find('a')
          .prepend('<span><i class="fas fa-angle-double-right"></i></span>');
    } 
  });

现在,没有简单的方法来侦听添加的活动类。您可以使用突变观察器,但这不起作用。另一种选择是不要担心它,只需将 HTML 添加到所有元素并使用 CSS 规则显示隐藏它。

li span.myIcon {
  display: none;
}
li.active span.myIcon {
  display: inline;
}

相关内容

  • 没有找到相关文章

最新更新