我的幻灯片输入/输出动画不能在jQuery中工作
My slide in / out animation is not working in jQuery
网址:
kotechweb.com/new_focus/page/proposal
请注意,在左上角有一个菜单按钮,如果菜单打开,我希望这个按钮滑动并隐藏菜单,另一方面,如果菜单关闭,滑动按钮并显示菜单。
代码
var is_closed = false;
$("#menu_btn").on("click", function () {
if (is_closed) {
$("#menu_right ul").show("slide", {direction: "left"}, 1000);
$(this).show("slide", {direction: "left"}, 1000);
} else {
$("#menu_right ul").hide("slide", {direction: "left"}, 1000);
$(this).show("slide", {direction: "left"}, 1000);
}
is_closed = !is_closed;
});
然而,现在menu_btn没有正确动画;它不会滑动,只会隐藏。
如何解决这个问题?
您已经实现的show()
和hide()
方法实际上属于jQuery UI(而不是jQuery)。
由于jQuery的内置show()
和hide()
不支持特殊效果,为了解决您的问题,我使用jQuery的animate()
方法HERE复制了大致相同的情况。
总结如下:
-
计算
#menu_right ul
的宽度,例如在变量slideSpan
中 -
设置
#menu_right ul
和#menu_btn
的left
属性在关闭时与slideSpan
相同,打开时为0
://while closing $(this).siblings('#menu_right ul').animate({left: -slideSpan}, 1000, 'swing'); $(this).animate({left: -slideSpan}, 1000, 'swing'); // ... // while opening $(this).siblings('#menu_right ul').animate({left: 0}, 1000, 'swing'); $(this).animate({left: 0}, 1000, 'swing');
注意:为了animate()
正常工作,确保#menu_right
, #menu_right ul
和#menu_btn
设置了它们的CSS位置(相对),并且#menu_right ul
和#menu_btn
浮动向左。
通过animate()
创建的动画同时运行,因为方法的queue
属性默认为false
。
也许问题是两个动画是在同一时间完成的?添加'queue: false'(警告:未测试代码):
$("#menu_right ul").show("slide", {direction: "left", queue: false}, 1000);
$(this).show("slide", {direction: "left", queue: false}, 1000);
抄自这个问题:如何同时运行两个jQuery动画?
相关文章:
- PHP/AAJAX阻止jquery工作
- Chrome扩展和Chome浏览器中的Jquery工作方式不同
- 2次点击事件不会'我在jquery工作
- 使用 href=“#” JQuery 工作,但使用 href=“page.jsp” 不起作用
- 迭代 javascript 对象无法通过 jQuery 工作
- 让简单的Javascript / jQuery工作(Ariel Flesler的ScrollTo)
- 更新面板阻止 jquery 工作
- Jquery工作,但只是暂时的
- 一个jQuery工作,两个不工作
- 当我使用AngularJS部分时,如何让JQuery工作
- 为什么不;我的jquery工作(使用延迟、hasclass、addclass、removeclass、keyUp、key
- jQuery工作不正常
- 我有一个JQuery工作,但小越野车
- :has() jquery工作不正常
- JQuery工作得太快了
- 如果一个输入单选被选中,改变父元素'的颜色:不能'使它与jQuery工作
- Chrome扩展:访问DOM的弹出.html和让jQuery工作
- 如何使下拉jQuery工作
- 尝试使jquery工作
- RegEx不与我的jQuery工作