0

特定のクラスに属するすべての要素を取得するために Jquery $.each を使用していますが、それらのそれぞれに対して次々に関数を呼び出したいと考えていました。これを実現するために、次の関数を呼び出しました。

 var elements = $('.colorpickerHolder');
                    elements.each(self.ApplyColorPicker());

実行時に、要素には正しい 3 つの要素があることがわかります。ここで、self.ApplyColorPicker を呼び出すと、現在の各要素を $(this) で参照しています。驚いたことに、 $(this) は現在の要素ではありません。

私のコードはノックアウト フレームワークで動作しており、コードの両方の部分は viewModel の下にあります。ApplyColorPicker $(this) 内で、私のビューモデルになります。なぜだかわかりません。何か理由はありますか?

以下は、レビューの私の ApplyColorPicker コードです。

 self.ApplyColorPicker = function () {
           $(this).ColorPicker({
                color: '#0000ff',
                onShow: function (colpkr) {
                    $(colpkr).fadeIn(500);
                    return false;
                },
                onHide: function (colpkr) {
                    $(colpkr).fadeOut(500);
                    return false;
                },
                onChange: function (hsb, hex, rgb) {
                    $(this).css('backgroundColor', '#' + hex);
                }
            });
        };
4

3 に答える 3

2

each関数が評価するものではなく、関数自体への参照を に渡します。つまり、self.ApplyColorPicker代わりに を使用しself.ApplyColorPicker()ます。

 var elements = $('.colorpickerHolder');
 elements.each(self.ApplyColorPicker);
于 2012-09-07T18:00:35.283 に答える
2

ApplyColorPickersステートメントで呼び出しているように見えます。つまり、一度だけ呼び出され、関数への参照ではなく、.eachその関数の結果を に渡しています。.eachこれは代わりに機能するはずです:

elements.each(self.ApplyColorPicker); //Without the () after ApplyColorPicker
于 2012-09-07T18:00:54.453 に答える
1

あなたがする必要があります:

elements.each(self.ApplyColorPicker);

問題は、self.ApplyColorPicker()実際に関数を呼び出すことです。渡す必要が$.eachあるのは、関数への参照です。

于 2012-09-07T17:51:42.067 に答える