JQuery hide()并选中复选框

JQuery hide()并选中复选框,jquery,checkbox,hide,Jquery,Checkbox,Hide,我有一些奇怪的行为,我搞不懂。我编写了一些代码,将一些功能添加到包含标签和复选框的列表中。如果用户启用了javascript,我希望复选框被隐藏,标签可以点击,并改变它们的外观以指示它们是否被选中。 代码如下: $(".cal_checkbox").each(function(){ $(this).hide(); var id = $(this).attr('id'); if($(this).attr('checked')) { $('#cal_checkbox_'+id).cs

我有一些奇怪的行为,我搞不懂。我编写了一些代码,将一些功能添加到包含标签和复选框的列表中。如果用户启用了javascript,我希望复选框被隐藏,标签可以点击,并改变它们的外观以指示它们是否被选中。 代码如下:

$(".cal_checkbox").each(function(){
$(this).hide();
var id = $(this).attr('id');
if($(this).attr('checked'))
    {
    $('#cal_checkbox_'+id).css({"font-weight":"bold"}).css({'color':'#7C001D'}) // make bold and red if selected
    .click(function(){
        $(this).attr('checked', false)
    })
    }
else
    {
    $('#cal_checkbox_'+id).click(function(){
        $(this).attr('checked', true)
    })
    }});

如果我注释掉hide()行,也就是说,如果复选框可见,您仍然可以单击标签,并且所有内容都会发生变化并正常工作,那么这一切都很好。但是,如果我将hide()保留在中,并且复选框变为不可见,则整个过程将停止工作。我认为hide()只是以与“display:none;”相同的方式呈现所选元素。它是否完全删除了元素?

在您的单击函数中,“this”的上下文将被分配给“#cal_checkbox_'+id”元素(我假设它是复选框旁边标签的id

hide()只是将display css属性更新为none。它不会从DOM中删除元素

如果您使用HTML元素作为复选框标签,那么这可能解释了为什么隐藏复选框时会出现混乱


你可以发布你的HTML和javascript吗?

你可以澄清“停止工作”吗?在预期功能方面有什么变化吗?我的意思是点击标签什么都不做。复选框是隐藏的,如果复选框被选中,标签的css也会改变。你可以发布HTML吗?