Jquery .each函数使用show()和hide()不选择最后一个复选框

时间:2011-03-21 18:15:47

标签: jquery

$(document).ready(function() {
  $('#comparebut').click(function(){
    var id='';
    $("#recomparebut").show();
    $("#comparebut").hide();
    $('input:checkbox').each(function() {

            id = '';
            id = $(this).val();
            //alert(id);
            if($(this).is(':checked'))
            {

                //$('#company_' + id).fadeIn(1500,function() {
                    //$('#company_' + id).show();
                //});
            }
            else{
                $('#company_' + id).fadeOut(1500,function() {
                    $('#company_' + id).hide();
                }); 
            }   
     });

  });
});

我试图在按钮点击事件上隐藏表格行。我是根据是否选中了复选框来检查行。它工作正常,但当我选中底部复选框和其他复选框时,最后一个表格行消失。

1 个答案:

答案 0 :(得分:0)

我认为这是一个封闭问题。 试试:

$('#company_' + id).fadeOut(1500,(function(arg) {
    return function() {
        $('#company_' + arg).hide();
    }
})(id));

而不是

$('#company_' + id).fadeOut(1500,function() {
    $('#company_' + id).hide();
});

关于闭包的说明:http://jibbering.com/faq/notes/closures/