【发布时间】:2019-02-04 11:45:05
【问题描述】:
我正在使用带有侧边栏的Bootstrap Template,当用户点击.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'}
});
}
});
});
我在 public/js 文件夹中添加了this 并将以下内容添加到页脚:
<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>
【问题讨论】:
-
api.jquery.com/hide 表明带有 3 个参数的 hide 的签名是
hide( duration, easing, complete)其中 easing 和 complete 是函数。您正在传递三个参数。第一个只是由 jQuery 处理的后备,但第二个,缓动,期待一个函数并且你已经传递了一个对象。 -
从
.hide()中删除'slide', {direction:'left'}, 1000修复了它!在添加 ajax 之前,我完全不知道为什么它工作正常?? -
另外,如果您发布答案,我会接受。
标签: javascript jquery node.js ajax bootstrap-4