jQuery识别复选框值的问题?

时间:2012-05-30 09:11:32

标签: jquery

我的jQuery代码存在问题,因为某些原因它在我的情况下没有区分已选中和未选中的复选框。它在第一个帐户上识别它们(即,如果它从一开始就未被检查,它就会识别它实际上是未经检查的)。但如果你取消选中它,它仍然认为它没有被检查。

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

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

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

3 个答案:

答案 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>');
    }
});