McB*_*McB 5 javascript arrays jquery object
我创建了一个包含一些项目的对象,包括一个包含多个对象的对象,每个对象都包含一个数组.以下是它的结构.
$.myVar = {
cp : "",
ps : {
m1 : ["001", "002", "003"],
m2 : ["002", "004"]
}
};
Run Code Online (Sandbox Code Playgroud)
我的脚本一直在崩溃说$ .myVar.ps ["m1"]每个都没有方法.
当我进入Chrome的控制台进行调查时,我运行以下内容并获取显示的输出.
$.myVar.ps["m1"]
["001", "002", "003"]
$.myVar.ps["m1"].each( function (i, p) {alert(i)})
TypeError: Object 001,002,003 has no method 'each'
Run Code Online (Sandbox Code Playgroud)
此外,如果我运行以下内容,它证明m1是一个数组.
$.isArray($.myVar.ps["m1"])
true
Run Code Online (Sandbox Code Playgroud)
所以似乎同意m1是一个数组,但它拒绝这样对待它.知道我做错了什么吗?
Dom*_*nic 19
each不是本地Array方法; 它是jQuery对象的方法,即由$函数创建的对象.你可以这样做
$($.myVar.ps.m1).each(function (i, el) { /* ... */ });
Run Code Online (Sandbox Code Playgroud)
(不推荐,因为它在包装数组时会创建一个不必要的jQuery对象$(...)),或者你可以使用$.each:
$.each($.myVar.ps.m1, function (i, el) { /* ... */ });
Run Code Online (Sandbox Code Playgroud)
如果您使用的是现代浏览器(IE> = 9)或使用es5-shim,最推荐的路线是使用标准Array.prototype.forEach方法:
$.myVar.ps.m1.forEach(function (el, i) { /* ... */ });
Run Code Online (Sandbox Code Playgroud)
注意不同的参数顺序(IMO更好,因为如果你不需要它,你可以省略索引).
.each仅为jQuery对象定义.对于纯Javascript数组,请使用"静态方法"$.each.
$.each($.myVar.ps["m1"], function(i,p) { alert(i); });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6574 次 |
| 最近记录: |