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
                    });
                });
            });
        });
    }
};

它只工作一次就很好。如何在每个按键上使用参数启动函数加载?

4

2 回答 2

2

您可以使用keyup功能:

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

但是,如果您想在每个按键上加载一个页面,请确保拥有一个快速的服务器。

关于整个问题,要说出您要做什么并不容易。

先说几句:

  • 你真的想要一个名为 的函数$CartContent吗?为什么 ?
  • 您无需测试if($Handler.length > 0){:如果为空,则以下行将什么也不做
  • 每次有一个更改时,您是否要对每个百分比字段进行发布请求?这很奇怪
于 2012-10-22T07:57:09.610 回答
0

我只是将 $PercentField 函数完全移出并切换到.live()方法,因为在 .load 完成之前不会创建#item-percent-field

$(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 回答