javascript - 如何切换 insertBefore 或 InsertAfter?

标签 javascript jquery

我有一个选项卡按钮。带有向上的箭头和下方的文字。当您单击该选项卡时。网站标题被隐藏,箭头图标上下颠倒。

我还希望箭头更改其在 html 中的位置。

我可以使用以下脚本很好地完成此任务:

<script>    
    $('.contentTab').on('click', function(e) {
      $('.mainContent').toggleClass("closeHeader");
      $('.triangle-up').toggleClass("triangle-down");
      $(".triangle-down").insertAfter(".contentTab h1")
      e.preventDefault();
    });
</script>

//

我的问题是:如何切换此功能。这样,如果再次单击contentTab箭头恢复到原来的位置。我要创建一个 if 语句吗?我对 JS 还很陌生

谢谢!

最佳答案

由于您要切换元素上的类,因此您可以简单地使用 :not() pseudo class如果没有 .triangle-down 类,则选择 .triangle-up:

Example Here

$(".triangle-down").insertAfter(".contentTab h1");
$(".triangle-up:not(.triangle-down)").insertBefore(".contentTab h1");

完整代码片段:

$('.contentTab').on('click', function(e) {
  $('.mainContent').toggleClass("closeHeader");
  $('.triangle-up').toggleClass("triangle-down");
  $(".triangle-down").insertAfter(".contentTab h1");
  $(".triangle-up:not(.triangle-down)").insertBefore(".contentTab h1");
  e.preventDefault();
});
h1 {
  display: inline-block;
}
.triangle-down {
  color: #f00;
  display: inline-block;
  transform: rotate(180deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="contentTab">
  <span class="triangle-up">▲</span>
  <h1>Content tab header</h1>
</div>

关于javascript - 如何切换 insertBefore 或 InsertAfter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34779920/

相关文章:

javascript - 如何在不破坏 ANSI 转义码的情况下将字符串 chop 为最大长度

JQuery UI 对象按钮栏的工作方式类似于单选按钮

javascript - 单击 :hover of the burger menu? 时如何制作全页宽度下拉菜单

javascript - 显示包含特定字符串的 div

javascript - 使用三元运算符如何检查值来自哪个 $stateParams?

javascript - Node.js 中的变量未异步更新

javascript - 以模态打开pdf文件可能吗?

javascript - CSS 转换 jQuery 类更改上的 div

javascript - 在请求期间修改 jQuery $.ajax() success 方法

javascript - Python 2.5 模块允许在 Windows 下执行 javascript