【问题标题】:How to use a pseudo element added with jquery with the click function如何使用带有点击功能的jquery添加的伪元素
【发布时间】:2019-08-02 01:00:14
【问题描述】:

我输入的代码有效,但我想使用之前创建的箭头类,而不是使用li.parent这种方式$('.Arrow').click(function ()...,但它对我不起作用有可能实现吗?

$('ul#nav li.parent').before('<a class="arrow" href="#"></a>');

$(document).ready(function() {
  $('.parent').click(function() {
    $('.parent').not(this).find('.sub-nav.visible').removeClass('visible');
    $('.sub-nav', this).toggleClass('visible'); //find .sub-nav of clicked .parent
  });
});
#nav ul.sub-nav {
  display: none;
}

#nav ul.visible {
  display: block;
}

.arrow {
  width: 10px;
  height: 10px;
  background: red;
  display: inline-block;
  float: right;
  position: relative;
  right: 50%;
  margin-top: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="nav">
  <li class="parent">Home
    <ul class="sub-nav">
      <li>One</li>
      <li>Two</li>
      <li>Three</li>
    </ul>
  </li>
  <li class="parent">About
    <ul class="sub-nav">
      <li>First</li>
      <li>Second</li>
      <li>Third</li>
    </ul>
  </li>
  <li class="parent">Contact</li>
</ul>

【问题讨论】:

标签: jquery css accordion pseudo-element submenu


【解决方案1】:

$('.sub-nav').before('<a class="arrow" href="#"></a>');

$(document).ready(function() {
  $('.arrow').click(function() {
    var list = $(this).parent()
    var subList = $(list).children('.sub-nav')
    if(!$(subList).hasClass('visible')) {
    	$('.parent').not(this).find('.sub-nav.visible').removeClass('visible');
    }
    $(subList).toggleClass('visible');
  });
});
#nav ul.sub-nav {
  display: none;
}
#nav ul.visible {
  display: block;
}
.arrow {
  width: 10px;
  height: 10px;
  background: red;
  display: inline-block;
  float: right;
  position: relative;
  right: 50%;
  margin-top: 5px;
  cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="nav">
  <li class="parent">Home
    <ul class="sub-nav">
      <li>One</li>
      <li>Two</li>
      <li>Three</li>
    </ul>
  </li>
  <li class="parent">About
    <ul class="sub-nav">
      <li>First</li>
      <li>Second</li>
      <li>Third</li>
    </ul>
  </li>
  <li class="parent">Contact</li>
  <li class="parent">Help
    <ul class="sub-nav">
      <li>First</li>
      <li>Second</li>
      <li>Third</li>
    </ul>
  </li>
  <li class="parent">Argon
    <ul class="sub-nav">
      <li>First</li>
      <li>Second</li>
      <li>Third</li>
    </ul>
  </li>
</ul>

稍微整理了代码库,但这应该可以满足您的需求。

编辑

在 JS 文件中添加了一个 if 语句,该语句将处理对列表的重复单击,该列表将切换列表。

【讨论】:

  • 你好,谢谢,完美运行,但是我有一个问题,关于如何删除之前创建的类,即如果我扩展另一个项目,之前打开的其他项目会收缩。
  • 哦,我的错。只需添加您之前的代码:$('.parent').not(this).find('.sub-nav.visible').removeClass('visible'); 我会在答案中反映。如果有帮助,别忘了点赞 ;)
  • 您好,谢谢。我刚刚尝试过并且它可以工作,但是当我单击当前打开的箭头时我有疑问,它不会收缩,但是如果当我单击另一个箭头时它会收缩,我尝试修改它但它不起作用,但是谢谢和积极的反馈。
  • 我明白了...现在看看
  • 为您的问题添加了编辑
猜你喜欢
  • 2012-09-26
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
相关资源
最近更新 更多