2

私のウェブサイトにはいくつかのサムネイルがあり、それらはすべて同じスライドショーを表示するはずですが、異なるスライドが表示されています(.hiddenクラスを追加および削除することにより)。これは、表示されるはずのスライドを参照する番号でfunction showWork(toShow)、によって行われます。toShowこの関数は、このパラメーターも警告します。

mouseupさらに、JavaScriptを使用して、イベントをさまざまなサムネイルdivにバインドすることでこれを実行したいと思います。すべてのバインドを個別にリストしたくないので、すべてのdiv idを配列(workArr)に入れて、forループを作成することにしました。

for(i=0; i < workArr.length; i++){
$("#"+workArr[i]).bind({
    mouseup: function(){
        showWork(i);
        }       
});
}

配列の長さは14です。このコードを実行すると、「14」のアラートが表示され、スライドが表示されません(14.スライドがないため)。

私は何が間違っているのですか?

4

1 に答える 1

4

クロージャを使用する必要があります:

for(i=0; i < workArr.length; i++){
    (function(i){
        $("#"+workArr[i]).bind({
            mouseup: function(){
                showWork(i);
            }       
        });        
    })(i);
}
于 2012-06-30T15:57:48.913 に答える