【问题标题】:Toggle Inline Chevron Down when activating bootstrap collapse激活引导折叠时切换 Inline Chevron Down
【发布时间】:2018-07-23 08:57:38
【问题描述】:

我不确定标题是否有意义,但我在 PHP 中循环回显了这个 HTML:

<a href='#' data-toggle='collapse' data-target='#myid'>
  <span class='fa fa-caret-down'></span>
</a>
<div id='myid' class='collapse'>Some Content</div>

我希望fa-caret-down 在单击时更改为fa-caret-up,反之亦然。我希望代码是内联的,所以我可以在这个实例中输出它。我该怎么做?

【问题讨论】:

  • api.jquery.com/toggleClass。另外,不要将代码内联。向您希望此逻辑处理的元素添加一个类,然后将 click 事件处理程序挂钩到该类。
  • @RoryMcCrossan 是的,这是用于错误报告,所以它是一个特殊情况。

标签: javascript jquery css twitter-bootstrap-3


【解决方案1】:

您可以将onClick 内联事件添加到您的锚点,并附加一个在类之间切换的函数,例如:

function toggleClass(self) {
  $('span', self).toggleClass('fa-caret-down fa-caret-up');
}
<link href="http://netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href='#' data-toggle='collapse' data-target='#myid' onClick="toggleClass(this)">
  <span class='fa fa-caret-down'></span>
</a>
<div id='myid' class='collapse'>Some Content</div>

建议

最好在所有锚点中使用一个公共类,并将点击事件附加到这个公共类,例如:

<a href='#' data-toggle='collapse' data-target='#myid' class="icon_toggle">
    <span class='fa fa-caret-down'></span>
</a>
<div id='myid' class='collapse'>Some Content</div>

在您的 js 代码中,您应该附加使用 jQuery 方法 toogleClass() 在两个类之间切换的单击事件,例如:

$('body').on('click', '.icon_toggle', function(){
     $('span', this).toggleClass('fa-caret-down fa-caret-up');
});

【讨论】:

  • 我知道它更好,但这不是我要求的。
  • 已更新您正在寻找的解决方案
  • 谢谢!有没有办法把它全部放到 onclick 中?
  • 是的,这对他们都有效,我建议更改id,否则您将以包含重复id 的无效HTML 代码结束
  • 谢谢你,这正是我想要的!
【解决方案2】:

如果有人有兴趣在不使用外部库的情况下使用 Vanilla JS 处理此问题。

var carets = document.querySelectorAll('.up-down');

carets.forEach(function(caret){
  caret.addEventListener("click", function(){
     this.getElementsByTagName('span')[0].classList.toggle('fa-caret-down');
     this.getElementsByTagName('span')[0].classList.toggle('fa-caret-up');
  });
})
<link href="http://netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" />
<a href='#' data-toggle='collapse' data-target='#myid' class="up-down">
  <span class='fa fa-caret-down'></span>
</a>

<div id='myid' class='collapse'>Some Content</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2014-12-19
    • 2016-02-29
    • 2017-11-05
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多