2011-09-16 3 views
1

私は$.each関数内に配列を持っています。新しい配列や変更された配列を作成するために反復処理を行いたい。しかし、私は外$.eachループから$(this)にアクセスする必要があります。jQuery配列.mapの内部。

// 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)$.mapと通常どおり使われていないことを知っています。それは$.eachのようです。この場合、セレクタを表す外側から$thisを渡そうとしています。

+1

問題の一部ではありませんが、 '$ selector.each(...) 'と書くこともできます。 – Pointy

+0

あなたは ');と思うタイプがあります。 – pimvdb

+1

@pimvdbはい、これも問題でしたが、 "長さ0から読み取れません"というエラーは発生しませんでした。私はコードから[私がした](http://jsfiddle.net/Pointy/XcvUS/1/)でそのエラーを取得しません。 – Pointy

答えて

2

待ち - あなたの "$の.MAP()" の代わりに "キー" のCALにあなたが "ヴァルス" を渡しているが:

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

Here jsfiddleです。コードはうまく動作しますが、実際のHTMLを見ることなく、正確に何が起こるかを知るのは難しいです。

+0

Thxうん、それは 'キー'です。更新された例それと同じエラー。 – ryanve

+0

ああ、私は私の答えを更新します。 – Pointy

+0

それは良いと悪いb/cは、この作品を意味するが、私は別の場所で問題を抱えている必要があります。ありがとうございました:) – ryanve

関連する問題