Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to pass multiple parameters to the jquery function

2025-01-20 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/01 Report--

这篇文章主要讲解了"怎么向jquery函数传递多个参数",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么向jquery函数传递多个参数"吧!

// Deferred helper

when: function( subordinate ) {

var i=0,

resolveValues = core_slice.call( arguments ),

length =resolveValues.length, //参数个数

//统计没有被解决的成员,

//如果参数个数不为1,则remaining为参数个数,

//如果参数个数为1且参数是 Deferred(延迟)对象则remaining为参数个数1;否则为0

remaining=length !==1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,

//初始化主延时对象,如果参数本身是一个延时对象则用参数即可,否则新建。

deferred=remaining===1 ? subordinate : jQuery.Deferred(),

// Update函数处理resolve和progress的值

updateFunc=function( i, contexts, values ) {

return function( value ) {

contexts[ i ] =this;

values[ i ] =arguments.length > 1 ? core_slice.call( arguments ) : value;

//成员延时(Deferred)对象生成进度通知的时候主延时(Deferred)对象调用进行中的回调

//后面代码。progress( updateFunc( i, progressContexts, progressValues),往进度回调列表添加函数的时候第三个参数就是progressValues if( values=== progressValues ) {

//调用进行中的回调(progressCallbacks )

deferred.notifyWith( contexts, values );

//否则成员延时(Deferred)对象解决的时候才进入该分支判断

//需要等待解决的延时(Deferred)对象数量减一,

//判断还有没有需要等待解决的延时(Deferred)对象,如果有,则判断失败返回

//如果没有则进入分支子代码,执行主延时(Deferred)对象解决deferred.resolveWith(…)

} else if ( !( --remaining ) ) {

//最终执行到此步的时候values已经变成所有成员延时(Deferred)对象resolve的参数序列

deferred.resolveWith( contexts, values );

}

};

},

progressValues, progressContexts, resolveContexts;

//对于没有参数或是有唯一一个非延时对象的,直接认为resolved,也就是后面if ( !remaining ) 分支的处理

//对于参数就是一个延时对象的直接将这个延时对象的deferred.promise()返回即可

//对于参数多于一个的才进入该分支,添加监听器监听成员被解决

if ( length > 1 ) {

progressValues =new Array( length );

progressContexts =new Array( length );

resolveContexts =new Array( length );

for ( ; i < length; i++ ) {

//遍历参数成员,只有成员是延时(Deferred)对象的才需要监听器

if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {

resolveValues[ i ].promise()

。done( updateFunc( i, resolveContexts, resolveValues ) )

//如果有一个成员延时(Deferred)对象拒绝时,则整个主延时(Deferred)对象直接拒绝

。fail( deferred.reject )

。progress( updateFunc( i, progressContexts, progressValues ) );

//非延时(Deferred)对象的直接认为已解决,需要等待解决的延时(Deferred)对象数量减一

} else {

--remaining;

}

}

}

//如果没有传递参数或唯一一个参数且不是一个延时对象,直接解决主延时对象即可

if ( !remaining ) {

deferred.resolveWith( resolveContexts, resolveValues );

}

return deferred.promise();

}

感谢各位的阅读,以上就是"怎么向jquery函数传递多个参数"的内容了,经过本文的学习后,相信大家对怎么向jquery函数传递多个参数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report