首页 新闻 赞助 找找看

jquery源码回调函数的实现问题!路过的大侠帮忙看下 谢谢!

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-15 16:59

jq源码提供的方法有很多回调函数,这里随便举个例子

            $(this).animate({ top: "200px", width: "200px" }, 3000, function () {
                $(this).css("border", "5px solid blue");
            })

其中animate的第3个参数就是回调函数 我想知道jquery源码他内部是怎么实现的或者说他的思路

扩展到其他的回调函数 他怎么就保证在其他的参数执行成功后触发!这里需要看源码我列举关键的。

jq源码8325行

    animate: function( prop, speed, easing, callback ) {
        var optall = jQuery.speed( speed, easing, callback );

        if ( jQuery.isEmptyObject( prop ) ) {
            return this.each( optall.complete, [ false ] );
        }xxxxxx

这里的callback 他是怎么在其他的参数执行完成后才触发。

这里只需要大侠们说下他的实现思路就可以了 或者列举他的关键代码。谢谢

KyrieYang的主页 KyrieYang | 菜鸟二级 | 园豆:205
提问于:2013-01-22 18:51
< >
分享
最佳答案
0

$.fn.xxx=function(opt,fn){

  var defaults={},

     option=$.extent(defaults,opt);

 

  //重点来了

   if (typeof fn== 'function'){

    fn("123");

  }

}

 

用法:

$("选择器").xx({},function(data){

  alert(data);//会弹出一个123

});

收获园豆:3
张传辉-Zohar | 菜鸟二级 |园豆:207 | 2013-01-24 12:08

谢谢 你这个确实是一个办法 也同样谢谢下面的朋友!

KyrieYang | 园豆:205 (菜鸟二级) | 2013-03-15 16:58
其他回答(1)
0
function todu(a,fn){
     alert(a);
     if(arguments.length>1)
         fn();
}
其实自己的函数也可以这么用

这东西的真正好处在于函数解耦。。

通过回调大大降低了代码的耦合程度
收获园豆:2
﹏Sakura | 园豆:220 (菜鸟二级) | 2013-01-25 00:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册