2014-07-18 21:02:03|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:JavaScript, JQuery|来源:唯设编程网
这个each就有更厉害了,能循环每一个属性
var obj = { one:1, two:2, three:3};
$.each(obj, function(key, val) {
alert(key);
alert(val);
});
这里alert(key)将输出:one two three
alert(val)将输出:1,2,3
这边为何key不是数字而是属性呢,因为json格式内是一组无序的属性-值,既然无序,又何来数字呢。
而这个val等同于obj[key]
此处以一个input表单元素作为例子。
如果你dom中有一段这样的代码
<input name="aaa" type="hidden" value="111" /> <input name="bbb" type="hidden" value="222" /> <input name="ccc" type="hidden" value="333" /> <input name="ddd" type="hidden" value="444"/>
然后你使用each如下
$.each($("input:hidden"), function(i,val){ alert(val); alert(i); alert(val.name); alert(val.value); });
那么,alert(val)将输出[object HTMLInputElement],因为它是一个表单元素。
alert(i)将输出为0,1,2,3
alert(val.name)将输出aaa,bbb,ccc,ddd,如果使用this.name将输出同样的结果
alert(val.value)将输出111,222,333,444,如果使用this.value将输出同样的结果
如果将以上面一段代码改变成如下的形式:
$("input:hidden").each(function(i,val){ alert(i); alert(val.name); alert(val.value); });
可以看到,输出的结果是一样的,至于两种写法究竟区别在哪,我也还不知。此改变运用到上面几段数组的操作也会输出同样的结果。
这样,几个例子的实际结果已经得到答案。接着再继续往下研究,总不能知其然不知其所以然。
从以上的例子中可知jQuery和jQuery对象都实现了该方法,对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQuery的each方法。