jQuery数组.map里面.each

时间:2011-09-16 12:52:10

标签: javascript jquery arrays map each

我在$.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

1 个答案:

答案 0 :(得分:2)

等等 - 你将“vals”传递给你的“$ .map()”cal而不是“key”:

var vals = $.map( keys, function( key ) { return $this.data(key); });

Here是一个jsfiddle。代码工作得很好,但是没有看到你的实际HTML,很难确切地知道你期望发生什么。