jQuery计算小时功能不起作用

时间:2015-11-24 16:25:01

标签: javascript jquery

我试图将$(this)值传递给jQuery函数。功能如下,但不起作用。控制台中没有错误。

该功能正在触发,因为当我在顶部发出警报时,它可以正常工作。

(function($){
    $.fn.calculateHours = function() {
        var tbody = $(this).closest('tbody'); // get closest tbody
        var table = $(this).closest('table'); // get closest table
        var params = table.find('.disguise').serialize(); // parameters

        $.ajax({
            type: 'post',
            dataType: 'json',
            url: '/calculateHours',
            data: params,
            success: function (response) {
                // loop over object
                $.each(response.rows, function(index, array) {
                    $.each(array, function(key, value) {
                        $('#row_' + index).find('.' + key).html(value);
                    });
                });

                if($.isPlainObject(response.columns)) {
                    $.each(response.columns, function(day, hour) {
                        $('.totalsRow').find('.total_' + day).html(hour);
                    });
                }

                $('.totalsRow').find('.grand_total').html(response.grand_total);
            }
        });
    }
})(jQuery);

$(document).on('change', '.disguise', function(e) { 
    $.fn.calculateHours();
});

2 个答案:

答案 0 :(得分:7)

$.fn添加函数意味着扩展jQuery对象。换句话说,您应该在jQuery对象上调用.calculateHours

$(document).on('change', '.disguise', function(e) { 
    $(this).calculateHours();
});

答案 1 :(得分:1)

您希望jquery自动设置上下文。要做到这一点,只需将对函数的引用作为处理程序传递。

null