使用jquery函数.on

时间:2012-10-22 07:53:40

标签: jquery jquery-ui

如何在加载事件中使用.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
                    });
                });
            });
        });
    }
};

它的工作只有一次。如何在每个键盘上使用参数启动功能加载?

2 个答案:

答案 0 :(得分:2)

您可以使用keyup功能:

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

但是如果你想在每个密钥上加载一个页面,请确保有一个快速的服务器。

关于整个问题,要告诉你要做什么并不容易。

首先说几句:

  • 你真的想要一个名为$CartContent的函数吗?为什么?
  • 您不需要测试if($Handler.length > 0){:如果为空则以下行只会执行任何操作
  • 您是否希望每次更改时为每个百分比字段发布一个帖子请求?这很奇怪

答案 1 :(得分: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);;
            });
        }
    });
});