简体   繁体   English

在Bootstrap 4中单击后如何更改图标?

[英]How do I change a icon upon clicking it in Bootstrap 4?

I have this 我有这个

<div class="container">
    <button id="menu-sound" class="btn video-icon" onclick="SoundOnAndOff()">
        <i class="fa fa-volume-up"></i>
    </button>
</div>

and in js 和在js中

$('#menu-sound').click(function(){
$(this).find('i').toggleClass('fa-volume-up').toggleClass('fa-volume-off');
});

Why don't work ? 为什么不工作?

The example that you've provided works perfectly fine. 您提供的示例效果很好。 There will be another problem. 会有另一个问题。 Maybe your libraries are not loading correctly. 也许您的库未正确加载。 So find out more about debugging your code and you'll find the problem pretty soon. 因此,找到有关调试代码的更多信息,您很快就会发现问题。

 $('#menu-sound').click(function() { $(this).find('i').toggleClass('fa-volume-up').toggleClass('fa-volume-off'); }); function SoundOnAndOff() { console.log('toggling sound'); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous"> <div class="container"> <button id="menu-sound" class="btn video-icon" onclick="SoundOnAndOff()"> <i class="fa fa-volume-up"></i> </button> </div> 

Further reading: 进一步阅读:

Liam answered already How can I debug my JavaScript code? Liam已回答我该如何调试我的JavaScript代码? [closed] [关闭]

Maybe, mistake in library. 也许是图书馆的错误。 This work fine. 这项工作很好。

 $('#menu-sound').click(function(){ $(this).find('i').toggleClass('fa-volume-up').toggleClass('fa-volume-off'); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet"> <div class="container"> <button id="menu-sound" class="btn video-icon"> <i class="fa fa-volume-up"></i> </button> </div> 

I've solved this problem in another way. 我用另一种方式解决了这个问题。 You can see my Plunker Demo here. 您可以在此处查看我的Plunker演示

 $(document).ready(function() {
  $('#menu-sound').click(function() {
    console.log($('#icon-menu-sound').hasClass('fa-volume-up'));
    if ($('#icon-menu-sound').hasClass('fa-volume-up')) {
      $('#icon-menu-sound').removeClass('fa-volume-up');
      $('#icon-menu-sound').addClass('fa-volume-off');
    } else if ($('#icon-menu-sound').hasClass('fa-volume-off')) {
      $('#icon-menu-sound').removeClass('fa-volume-off');
      $('#icon-menu-sound').addClass('fa-volume-up');
    }
  });
});

I've changed the HTML a bit 我稍微改变了HTML

<div class="container">
<button id="menu-sound" class="btn video-icon">
<i id='icon-menu-sound' class="fa fa-volume-up"></i>
</button>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM