我的jQuery代码存在问题,因为某些原因它在我的情况下没有区分已选中和未选中的复选框。它在第一个帐户上识别它们(即,如果它从一开始就未被检查,它就会识别它实际上是未经检查的)。但如果你取消选中它,它仍然认为它没有被检查。
你可以在这里看到: http://jsfiddle.net/3BZp4/1/
选中后,它会将行复制到第二个表,但是当您取消选中该行时,它仍会复制到第二个表,尽管选择器只询问未选中的行。
$('#one tbody tr td input.checkbox:not(:checked)').on('change', function (e)
{ });
答案 0 :(得分:2)
看起来您已将函数绑定到当前未选中的所有输入框。该函数将始终绑定到那些复选框,无论其后的状态如何。您应该将检查状态作为绑定函数的一部分进行检查,与codeparadox完成的操作非常相似。
答案 1 :(得分:1)
您可以尝试这样的事情:
$(':checkbox').on('change', function() {
if(this.checked) {
// do if checked
} else {
// do if not checked
}
});
您的完整代码将:
$('#one tbody tr td input.checkbox').on('change', function(e) {
if (this.checked) {
var row = $(this).closest('tr').html();
$('#two tbody').append('<tr>' + row + '</tr>');
}
});
选中 DEMO
答案 2 :(得分:1)
工作演示这就是您要找的http://jsfiddle.net/gvDGS/2/
API http://api.jquery.com/not-selector/
如果我错过任何事情,请告诉我,希望这有帮助!
代码 //与未经检查的所有人进行比较但检查是否选中了复选框。
$('input[type=checkbox]:not(:checked)').on('change', function() {
if( $(this).is(':checked') ){
var row = $(this).closest('tr').html();
$('#two tbody').append('<tr>' + row + '</tr>');
}
});