JQuery模糊功能(来自教程)

时间:2016-05-31 13:54:14

标签: jquery

我正在学习这个教程,教师的速度非常快,而且没有解释一些部分因此我正在搜索大量的文档,到目前为止它还不错。有一点我真的不明白为什么我的.on('blur',function(){..,我需要在400ms的持续时间后包含function(){}。为什么我不必包含function() {}当我使用焦点功能时?如果是这样,那么该功能的目的究竟是什么?教练只是键入了这个并且我不确定为什么。顺便说一下,我正在制作一个小型搜索引擎和讲师正在经历如何做到这一点。

$(document).ready(function(){

    var searchField = $('#query');
    var icon = $('#search-btn');

    $(searchField).on('focus',function(){

        $(this).animate({

            width:'100%'

        },400);

        $(icon).animate({
            right:'100px'
        }, 400);
    });

    $(searchField).on('blur', function(){
        if(searchField.val() == '')
        {
            $(searchField).animate(
                {
                width:'45%'
                },400,function(){});

            $icon.animate({
                right:'45%'
                },400,function(){});


        }

});

})

1 个答案:

答案 0 :(得分:1)

我假设你的意思是这里的空功能块?:

$(searchField).animate(
    {
        width:'45%'
    },400,function(){});  // <-- in here

这是一个回调函数。由于动画是异步操作(在这种情况下应该花费400毫秒),因此它不会阻止代码等待它完成。因此,如果完成之后有想要发生的事情,它将进入该功能块。

例如,考虑一下:

$(searchField).animate(
    {
        width:'45%'
    },400,function(){
        console.log('first');
    });
console.log('second');

由于代码是异步的,{<1}}实际上会在 'second'之前记录到控制台。这是因为当'first'“异步”时,其余的代码继续执行。然后在该异步操作之后调用回调。

由于功能块是空的,你实际上并不需要它,可能只是完全省略它。 然而,本教程中的讲师可能会将其作为占位符放在未来的步骤中。