jQuery невозможно удалить класс из материала bootstrap - PullRequest
0 голосов
/ 16 февраля 2020

Я использую материал bootstrap. И пытается удалить waves-effect waves-light классы. Но это не работает:

$("nav a").removeClass("waves-effect waves-light");

Хотя, если я добавлю класс;

$("nav a").addClass("testing"); // it works!

Это работает, если использовать setTimeout:

setTimeout(function(){
  $("nav a").removeClass("waves-effect waves-light");
},100)

Но я не уверен, почему это требуется? Я добавил скрипт после mdb script.

<script type='text/javascript' src='http://localhost/site/js/jquery.min.js'></script>
<script type='text/javascript' src='http://localhost/site/js/popper.min.js'></script>
<script type='text/javascript' src='http://localhost/site/js/bootstrap.min.js'></script>
<script type='text/javascript' src='http://localhost/site/js/mdb.min.js'></script>
<script type='text/javascript' src='http://localhost/site/js/custom-script.js'></script>

1 Ответ

0 голосов
/ 16 февраля 2020

addClass работает, потому что вы пытаетесь добавить новый class к элементу, но removeClass нет, потому что waves-effect waves-light класс добавляет после вас. Когда вы редактировали свой вопрос, вы использовали setTimeOut, но это не стабильное решение, вы используете библиотеку mdb , она может загружаться через 100 мс или даже после 1000, вам следует использовать setInterval и снимите флажок, как показано ниже, это безопасное решение, но я бы предпочел удалить этот класс из исходного кода.

var rm = setInterval(remover, 100);

function remover() {
  $("nav a").removeClass("waves-effect waves-light");
}

function StopInterval() {
  if (!$("nav a").hasClass('.waves-effect.waves-light')) {
    clearInterval(rm);
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav>
  <a class="waves-effect waves-light">Blah</a>
</nav>
...