toggle()函数在不传递第二个参数的情况下工作。

时间:2015-03-10 08:04:35

标签: javascript jquery

嘿伙计们,我只是在构建最简单的下拉菜单,我正在使用一小段Jquery,我自己编写代码。虽然我有一个小问题。 checkout我的Jquery代码:

$('#r-menu').on('click', function () {
    $('#menu').toggle(function () {
        $(this).css({
            'display': 'block'
        });
    }, function () {
        // $(this).css({ 'display' : 'none' }); 
    }); // end toggle
}); 

Fiddle here

现在,为什么在我没有添加secound函数的情况下toggle()正常工作。我的代码工作正常,我的问题是为什么菜单在display:none和display:block之间切换,当我没有明确指定toggle()的第二个参数时?这将是我的第一个也是最重要的问题。

我的第二个问题以及更多的补充问题,请注意当您点击菜单时,当切换时,菜单从左上角滑入并放大,此效果来自何处?我没有在任何地方指定slideup()或slidein()?内部应用有什么影响吗?

我很感激我对这个困难的解释。

谢谢。

亚历山大。

2 个答案:

答案 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的善用动画