我试图将$(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();
});
答案 0 :(得分:7)
向$.fn
添加函数意味着扩展jQuery对象。换句话说,您应该在jQuery对象上调用.calculateHours
:
$(document).on('change', '.disguise', function(e) {
$(this).calculateHours();
});
答案 1 :(得分:1)
您希望jquery自动设置上下文。要做到这一点,只需将对函数的引用作为处理程序传递。
null