0

現在、カスタム ギャラリーに取り組んでいますが、ループ中に適用する変数の配列を取得できないようです。私は何が欠けていますか?

関連するコードは次のとおりです。

var racerImage = ['$("img.ryanthumb")', '$("img.pierthumb")', '$("img.jeremythumb")',
       '$("img.mattthumb")', '$("img.andrewthumb")', '$("img.alanthumb")',
       '$("img.kevinthumb")', '$("img.mikethumb")', '$("img.dougthumb")'];

var showMe= ['showRacer("ryan")\;', 'showRacer("pier")\;',
       'showRacer("jeremy")\;', 'showRacer("matt")\;', 'showRacer("andrew")\;',
       'showRacer("alan")\;', 'showRacer("kevin")\;', 'showRacer("mike")\;', 
       'showRacer("doug")\;'];

for (var i = 0; i < racerImage.length; i++)
{
    racerImage[i].click(function(){
        switch (i)
        {
            case 0:
                showMe[i];
                break;
            case 1:
                showMe[i];
                break;
            case 2:
                showMe[i];
                break;
            case 3:
                showMe[i];
                break;
            case 4:
                showMe[i];
                break;
            case 5:
                showMe[i];
                break;
            case 6:
                showMe[i];
                break;
            case 7:
                showMe[i];
                break;
            case 8:
                showMe[i];
                break;
        }
    });
}

基本的に、何度も何度も書くのではなく、forループを使用してjqueryを複数回適用しようとしています。これが正しい方法であるかどうかはわかりませんが、洞察は素晴らしいでしょう。再度、感謝します!

4

3 に答える 3

1

racerImage[0]値を含む単なる文字列であり$("img.ryanthumb")、jQuery オブジェクトではありません。

おそらくやりたいことは、セレクターの値を文字列に入れ、そこから jQuery 関数を呼び出すことです。

var racerImage = ['img.ryanthumb', 'img.pierthumb', ...etc...];

...

$(racerImage[i]).click(function(){...});

または、配列を jQuery オブジェクトにして使用することもできます。

var racerImage = [$("img.ryanthumb"), $("img.pierthumb"), ...etc...];

...

racerImage[i].click(function(){...});

編集

コメントをくれた Joel に感謝します - うん、同じ問題ですshowRacer- おそらくそれらは関数の配列になる可能性があります:

var showMe= [function(){showRacer("ryan");}, function(){showRacer("pier");}, ...etc...];

...

showMe[i]();
于 2013-09-17T22:48:57.750 に答える