伙计们我需要帮助jquery。我有这张表http://jsfiddle.net/msx20/PLHSV/1/
我想要动态地计算一行中选择输入中相同值的数量,并在指定类的表格单元格中显示结果。
colcountPlus,colcountMinus,colcountN - 用于当前列的select的相同值的摘要编号
rowcountPlus,rowcountMinus,rowcountN - 表示当前行选择的相同值的摘要编号
我尝试在jQuery中创建它,但我的代码根本不起作用,我的代码
$(document).ready(function () {
$('.fields select').change(function () {
getCount($(this));
});
function getCount() {
var count = 0;
$(':selected .fields').live('click', function (.val)) {
if ($(this).val() == '+') {
count++;
$('tr td:first .rowcountPlus').text(count);
} else if ($(this).val() == '-') {
count++;
$('tr td:first .rowcountMinus').text(count);
} else if ($(this).val() == 'N') {
count++;
$('tr td:first .rowcountN').text(count);
} else if ($(this).val() == '+') {
count++;
$('tr td:first .colcountPlus').text(count);
} else if ($(this).val() == '-') {
count++;
$('tr td:first .colcountMinus').text(count);
} else if ($(this).val() == 'N') {
count++;
$('tr td:first .colcountN').text(count);
}
});
}
但它根本没用,我有错误:$(':selected。fields')。live('click',function(.val)){,并且在代码的末尾}。< / p>
此外,我想通过输入选择取消全选来选择所有测试单元。
有人可以帮我这个代码吗?我已经搜索了堆栈,但我还没有发现任何类似的问题。
答案 0 :(得分:1)
尝试
jQuery(function () {
var $table = $('table'),
$trPlus = $table.find('tbody tr:nth-last-child(3)'),
$trMinus = $table.find('tbody tr:nth-last-child(2)'),
$trDeny = $table.find('tbody tr:nth-last-child(1)');
$table.find('select').change(function () {
var $this = $(this),
column = $(this).parent().index(),
$tr = $(this).closest('tr'),
$rowels = $tr.find('select'),
$colels = $table.find('tbody td:nth-child(' + (column + 1) + ') select');
var rowt = total($rowels);
$tr.find('.countPlus').text(rowt['+'] || 0);
$tr.find('.countMinus').text(rowt['-'] || 0);
$tr.find('.countDeny').text(rowt['n'] || 0);
var colt = total($colels);
$trDeny.find('td:nth-child(' + (column - 1) + ')').text(colt['n'] || 0);
$trMinus.find('td:nth-child(' + (column - 1) + ')').text(colt['-'] || 0);
$trPlus.find('td:nth-child(' + (column - 1) + ')').text(colt['+'] || 0);
});
//to initialize the table
$table.find('tbody tr:nth-child(2) select').change();
function total($selects) {
var totals = {};
$selects.each(function () {
var val = this.value;
totals[val] = (totals[val] || 0) + 1;
});
return totals;
}
});
演示:Fiddle