嘿伙计们,我只是在构建最简单的下拉菜单,我正在使用一小段Jquery,我自己编写代码。虽然我有一个小问题。 checkout我的Jquery代码:
$('#r-menu').on('click', function () {
$('#menu').toggle(function () {
$(this).css({
'display': 'block'
});
}, function () {
// $(this).css({ 'display' : 'none' });
}); // end toggle
});
现在,为什么在我没有添加secound函数的情况下toggle()正常工作。我的代码工作正常,我的问题是为什么菜单在display:none和display:block之间切换,当我没有明确指定toggle()的第二个参数时?这将是我的第一个也是最重要的问题。
我的第二个问题以及更多的补充问题,请注意当您点击菜单时,当切换时,菜单从左上角滑入并放大,此效果来自何处?我没有在任何地方指定slideup()或slidein()?内部应用有什么影响吗?
我很感激我对这个困难的解释。
谢谢。
亚历山大。
答案 0 :(得分:3)
jQuery 1.9中删除了toggle(function, function),它用于在每次点击elemnet时调用不同的函数。
您正在调用toggle()函数,该函数切换元素的显示
$('#r-menu').on('click', function () {
$('#menu').toggle(); // end toggle
});
演示:Fiddle
答案 1 :(得分:1)
Toggle默认在隐藏状态和显示状态之间切换elemet。
在jQuery API docs中,现在没有预期回调的变体。但你仍然可以在动画结尾添加回调,如:
$('#menu').toggle(0, function() {
// Animation complete.
});
第二部分。默认情况下,动画持续时间为400毫秒(0.4秒)。通过传递选项,你可以改变它的持续时间(0,我的例子中没有动画,只是隐藏)和使用jquery的善用动画