我最近遇到了一个我以前从未见过的jQuery构造.这是一个简化版本:
$([ '1', '2', '3' ]).each( function( index, value ) {
console.log( "index", index, "value", value );
});
Run Code Online (Sandbox Code Playgroud)
这会迭代数组的所有元素[ '1', '2', '3' ].问题是,我习惯看到$(...)与CSS选择器一起使用,但我还没有看到它在新声明的数组上使用,正如在这里所做的那样.它似乎工作(使用Firefox 34和Chromium 39测试).
Q1:我是否理解这相当于
var a = [ '1', '2', '3' ];
for ( var i = 0, value; value = a[i]; i++ ) {
console.log( "index", i, "value", value );
}
Run Code Online (Sandbox Code Playgroud)
如果没有,有什么区别?(除了这声明变量的事实a,i和value).
Q2:就jQuery中的数组迭代而言,我更习惯$.each(不要与$(selector).each上面使用的混淆).以上是否相当于
$.each( [ '1', '2', '3' ], function( index, value ){
console.log( "index", index, "value", value );
});
Run Code Online (Sandbox Code Playgroud)
如果是的话,为什么jQuery中有两个非常相似的结构?在两者之间,迭代数组的首选方法是什么,或者这仅仅是个人风格的问题?
Q1. 是的。
Q2。jQuery 接受数组(和类似数组的对象)并将它们转换为 jQuery 对象。
您可以通过在浏览器控制台上发出以下命令轻松查看:
console.dir($([ '1', '2', '3' ]))
> VM199:2 e.fn.e.init[3]
Run Code Online (Sandbox Code Playgroud)
这是调用返回的 jQuery 对象。可以使用 迭代它们.each()。此工具旨在使您能够执行此操作(人为示例):
$(document.getElementsByTagName("A")).each(func);
Run Code Online (Sandbox Code Playgroud)
使用普通字符串数组执行此操作是有效的,并且将来可能会继续有效,但我仍然认为这是对 API 的误用,并会推荐正确的方法:
$.each(['1', '2', '3' ], func);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4137 次 |
| 最近记录: |