Невозможно использовать анимацию ajax POST и jquery одновременно (используя Bootstrap) - PullRequest
0 голосов
/ 04 февраля 2019

Я использую шаблон Bootstrap , который имеет боковую панель, и когда пользователь нажимает .nav-menu (или название компании в шаблоне), боковая панель скрывает / отображает.

$(document).ready(function () {

    $( '.nav-menu' ).click(function() {
         event.preventDefault();
         if($( '.nav-menu-item' ).is(":visible")){
              $('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000);
              $('#menu-item-container').addClass('sidebar-hidden');
         } else{
              $('.nav-menu-item' ).show('slide', {direction:'left'}, 1000);
              $('#menu-item-container').removeClass('sidebar-hidden');  
         }
    });
});

Приведенный выше код работает нормально.

Проблема возникает, когда я пытаюсь включить сообщение ajax, как показано ниже:

$(document).ready(function () {

    $( '.nav-menu' ).click(function() {
         event.preventDefault();
         if($( '.nav-menu-item' ).is(":visible")){
              $('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000);
              $('#menu-item-container').addClass('sidebar-hidden');

              $.ajax({
                url:'/userSettings',
                type:'POST',
                data:{'sidebar':'0'}
              });


         } else{
              $('.nav-menu-item' ).show('slide', {direction:'left'}, 1000);
              $('#menu-item-container').removeClass('sidebar-hidden'); 

              $.ajax({
                url:'/userSettings',
                type:'POST',
                data:{'sidebar':'1'}
              });

         }
    });
});

Я добавил этот в свой общий доступ/ js папку и добавил следующее в нижний колонтитул:

<script type="text/javascript" src="js/jquery-3.3.1.js"></script>

Теперь ajax POST работает нормально (за исключением того, что я должен дважды щелкнуть по .nav-menu), но анимация показать / скрыть не работает правильно!

Эта $('.nav-menu-item' ).hide('slide', {direction:'left'}, 1000); часть кода вообще не работает!

Это ошибка в консоли Chrome (их 7270):

jquery-3.3.1.js:6710 Uncaught TypeError: jQuery.easing[this.easing] is not a function
    at init.run (jquery-3.3.1.js:6710)
    at tick (jquery-3.3.1.js:7094)
    at Function.jQuery.fx.tick (jquery-3.3.1.js:7436)
    at schedule (jquery-3.3.1.js:6813)

Не уверен, что это актуально, но это весь нижний колонтитул:

//bootstrap required
<script src="https://cdnjs.cloudflare.com/ajax/libs/feather-icons/4.9.0/feather.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
//bootstrap required

<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script src="js/dashboard.js"></script>
<script src="js/jquery.js"></script>
</body>
</html>

1 Ответ

0 голосов
/ 04 февраля 2019

Документация jQuery hide () показывает, что сигнатурой скрытия с 3 аргументами является скрытие (длительность, замедление, завершение), где замедление и завершение - это функции.Вы передаете три аргумента.Первый из них просто обрабатывается с помощью отката с помощью jQuery, а второй, easing, ожидает функцию, и вы передали объект.

Может быть, это только показалось, что он работал до добавления кода AJAX.Возможно, вы тоже получали ошибки, но они не мешали запуску дополнительного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...