如何使用jquery $.each()方法迭代对象文字数组?
在chrome调试器中,它返回为“未定义的,未定义的”。
任何帮助都将不胜感激。谢谢!
var links = [
{ className : 'hover', url : 'http://www.yahoo.com' },
{ className : 'hover-2', url : 'http://www.foxnews.com' },
];
loopy(links)
function loopy(obj){
$.each(
obj,
function(){
console.log(obj.className + ', ' + obj.url);
}
);
}发布于 2011-08-07 10:19:48
尝试:
$.each(
obj,
function(i, val){
console.log(val.className + ', ' + val.url);
}
);$.each函数参数有两个参数--数组中当前项的索引,第二个是数组的实际当前值。
有关更多解释和示例,请参阅API。
您可以查看此fiddle以查看它的实际操作。
发布于 2015-04-01 01:32:25
我只是想提供一个稍微修改过的David响应版本,在处理较大的对象时,DOM会更温和一些。
原始答案(上图):
$.each(
obj,
function(i, val){
console.log(val.className + ', ' + val.url);
}
);此解决方案可以工作,但它会为对象中的每个属性生成一个全新的迭代器函数实例。不需要这样做,我认为通过声明特定的方法来处理这类事情,您会发现在较大的应用程序中性能更稳定。
试试这个:
// Process a property in your link object
function links_iterationHandler(i, val) {
console.log(val.className + ', ' + val.url);
}
// Traverse the link object and pass each result off to the method above
$.each(obj, links_iterationHandler);这基本上做了同样的事情,但不会对DOM产生太大的影响。如果你的对象中只有几个项目,那也没什么大不了的。但是,如果您正在处理大量数据,比如通过Ajax加载的大型记录集,这肯定会有所不同。
干杯!
发布于 2011-08-07 10:20:29
我试一下:$.each(52,97,function(index,value) { alert(index + ':‘+ value);});
第一个属性是索引。
http://api.jquery.com/jQuery.each/
https://stackoverflow.com/questions/6970300
复制相似问题