我在$.each
函数中有一个数组。我想迭代它来创建一个新的或修改过的数组。但我需要从外部$(this)
循环访问$.each
:
// target these data attributes:
$selector = $('[data-my0], [data-my1], [data-my2]');
$.each($selector, function() {
var $this = $(this), // cache selector
keys = ['my0', 'my1', 'my2']; // array of data keys
// I want to use the keys array to make a vals array to this:
// var vals = [$this.data('my0'), $this.data('my1'), $this.data('my2')];
// This doesn't seem to work (can't read from length 0 error):
var vals = $.map( keys, function( key ) { return $this.data(key); });
});
我认为使用$.each
或$.map
可以做到这一点,但这就是我被困住的地方。我知道$(this)
与[{1}}的{{1}}无法正常使用$.map
。在这种情况下,我试图从代表选择器的外部传递$.each
。
答案 0 :(得分:2)
等等 - 你将“vals”传递给你的“$ .map()”cal而不是“key”:
var vals = $.map( keys, function( key ) { return $this.data(key); });
Here是一个jsfiddle。代码工作得很好,但是没有看到你的实际HTML,很难确切地知道你期望发生什么。