0

ロードイベントで .on を複数回使用するには?

var $CartContent = function(){
    $Handler = $('#cartHandler');
    if($Handler.length > 0){
        $Handler.load('cart/content', function(){
            $PercentField = $('#item-percent-field');
            $PercentField.val(0);
            $('.percent-field').val(0);
            $PercentField.on('keyup', function(){
                var $Value = parseInt($(this).val());
                $.each($('.percent-field'), function(index, value){
                    var $Current = $(this).data('item');
                    $.post('cart/content', {
                        id: $Current,
                        percent: $Value
                    });
                });
            });
        });
    }
};

1回だけで大丈夫です。すべてのキーアップでパラメーターを使用して関数のロードを開始する方法は?

4

2 に答える 2

2

keyup関数を使用できます。

$('#item-percent-field').keyup(function(){
    $('#cartHandler').load( ...
    ...
});

ただし、キーを押すたびにページをロードする場合は、高速サーバーを用意してください。

問題全体に関して、何をしようとしているのかを伝えるのは簡単ではありません。

最初のいくつかの発言:

  • という名前の関数が本当に必要$CartContentですか? なんで ?
  • テストする必要はありませんif($Handler.length > 0){。空の場合、次の行は単に何もしません
  • パーセントフィールドが変更されるたびに、すべてのパーセントフィールドに対してポストリクエストを作成しますか? 変ですね
于 2012-10-22T07:57:09.610 に答える
0

#it​​em -percent-field は .load が完了するまで作成されないため、$PercentField 関数を完全に移動して.live()メソッドに切り替えます。

$(function(){
    $('#item-percent-field').live('keyup',function(){
        var $Value = parseInt($(this).val());
        $.each($('.percent-field'), function(index, value){
            var $Current = $(this).data('item');
            $.post('cart/content', {
                id: $Current,
                percent: $Value
            });
        });
    })
    var $CartContent = function(){
        $Handler = $('#cartHandler');
        if($Handler.length > 0){
            $Handler.load('cart/content', function(){
                $PercentField = $('#item-percent-field');
                $PercentField.val(0);
                $('.percent-field').val(0);;
            });
        }
    });
});
于 2012-10-22T08:03:12.857 に答える