收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 1667|回复: 4

[jquery] 请问Jquery中on方法参数如何做到可选的?

[复制链接]
发表于 2017-5-9 14:57:45 | 显示全部楼层 |阅读模式
本帖最后由 xionchan 于 2017-5-9 14:58 编辑

如:
test.png

http://blog.csdn.net/yu452148611/article/details/50505227

蓝色参数可选,且不可以跳过中间两个参数直接到fn参数。


如果是自己定义一个方法,参数必须按顺序来,如:
function test(a,b,c){
//不能跳过b参数直接调用c参数
}

请问Jquery中是怎么做到的呢?
如果自己定义函数,有没有可能这样做?
发表于 2017-5-9 20:02:23 | 显示全部楼层
类型判断typeof
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-9 23:23:19 | 显示全部楼层
如果是类型判断,第一个第二个参数都可以是string类型啊
回复 支持 反对

使用道具 举报

发表于 2017-5-10 20:30:55 | 显示全部楼层
  1. on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
  2.                 var origFn, type;

  3.                 // Types can be a map of types/handlers
  4.                 if ( typeof types === "object" ) {
  5.                         // ( types-Object, selector, data )
  6.                         if ( typeof selector !== "string" ) { // && selector != null
  7.                                 // ( types-Object, data )
  8.                                 data = data || selector;
  9.                                 selector = undefined;
  10.                         }
  11.                         for ( type in types ) {
  12.                                 this.on( type, selector, data, types[ type ], one );
  13.                         }
  14.                         return this;
  15.                 }

  16.                 if ( data == null && fn == null ) {
  17.                         // ( types, fn )
  18.                         fn = selector;
  19.                         data = selector = undefined;
  20.                 } else if ( fn == null ) {
  21.                         if ( typeof selector === "string" ) {
  22.                                 // ( types, selector, fn )
  23.                                 fn = data;
  24.                                 data = undefined;
  25.                         } else {
  26.                                 // ( types, data, fn )
  27.                                 fn = data;
  28.                                 data = selector;
  29.                                 selector = undefined;
  30.                         }
  31.                 }
  32.                 if ( fn === false ) {
  33.                         fn = returnFalse;
  34.                 } else if ( !fn ) {
  35.                         return this;
  36.                 }

  37.                 if ( one === 1 ) {
  38.                         origFn = fn;
  39.                         fn = function( event ) {
  40.                                 // Can use an empty set, since event contains the info
  41.                                 jQuery().off( event );
  42.                                 return origFn.apply( this, arguments );
  43.                         };
  44.                         // Use same guid so caller can remove using origFn
  45.                         fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
  46.                 }
  47.                 return this.each( function() {
  48.                         jQuery.event.add( this, types, fn, data, selector );
  49.                 });
  50.         }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-11 11:39:15 | 显示全部楼层
谢谢!这个on方法中最后一个参数map的用法是什么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-9-18 23:00 , Processed in 0.140269 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表