深入理解$.each和$(selector).each
$.each:该方法用于遍历任何集合,包括数组和对象
$(selector).each:该方法用于遍历Jquery对象
语法:$.each(obj,callback,args)
①遍历数组
vararry=["a","b","c","d",…];
$.each(arry,function(index,value){…})
回调函数中:index代表数组的索引,value代表数组中的值
②遍历Json对象
varjson={key1:value1,key2:value2,key3:value3}
$.each(json,function(key,value){…})
回调函数中:key代表json对象中的key,value代表json对象中的value
③遍历Jquery对象
vardoms=$("div");//Jquery对象本身是一个集合,通过索引的方式可以将Jquery对象转换为Dom对象
$.each(doms,function(index,value){..})
回调函数中:index代表Jquery对象中的索引,value代表Jquery对象中的dom对象,也可以通过this得到同样的dom对象
对于③还有另外一种写法就是$("div").each(function(index,value){…})
对于$.each方法可以通过在回调函数中returnfalse退出循环,如果returntrue则相当于for循环中的continue
疑问:为什么$().each回调函数中的this不是Jquery对象而是Dom对象
由于$().each方法的本质是通过调用$.each实现的,通过分析$.each源码可知,我们可以看到callback.apply(object[i++],args)这段代码
对于$().each传进去的object正是Jquery对象,而object[i++]将Jquery对象转换为dom对象,再根据apply方法劫持对象的特性,那么回调函数中的this就被改变成了dom对象
我们经常在Jquery插件中看到这种写法,通过上面的分析,我想就应该懂了
$.fn.test=function(option){ returnthis.each(function(){//这个this是Jquery对象 alert(this);//而这个this却是Dom对象 }) }
以上这篇深入理解$.each和$(selector).each就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。