0

我的 jQuery 代码有问题,因为某种原因它在我的情况下无法区分选中和未选中的复选框。它在第一个帐户上识别它们(即,如果它一开始未选中,它会识别它实际上未选中)。但是,如果您随后取消选中它,它仍然认为它未选中。

你可以在这里看到:http: //jsfiddle.net/3BZp4/1/

选中后,它将将该行复制到第二个表,但是当您取消选中同一行时,尽管选择器只要求未选中的行,它仍会复制到第二个表。

$('#one tbody tr td input.checkbox:not(:checked)').on('change', function (e)
{ });
4

3 回答 3

2

看起来您已将函数绑定到当前未选中的所有输入框。该功能将始终绑定到这些复选框,无论其后的状态如何。您应该检查已检查状态作为绑定函数的一部分,这与代码悖论所做的非常相似。

于 2012-05-30T09:18:42.740 回答
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>');
    }
});

检查此演示

于 2012-05-30T09:14:03.610 回答
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>');
    }
});
于 2012-05-30T09:24:38.050 回答