2010-03-02 116 views
0

我有一些奇怪的行为发生,我不能工作。我写了一些代码来添加一些功能到包含标签和复选框的列表中。如果用户启用了JavaScript,我希望隐藏复选框并使标签变得可点击并更改其外观,以指示是否已选中它们。 下面的代码:JQuery隐藏()和复选框选择

$(".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;”相同的方式渲染选定的元素。它是否完全删除元素?

+0

你能澄清'停止工作'?就预期的功能而言,有哪些变化? – Dancrumb 2010-03-02 17:57:16

+0

我的意思是点击标签什么也不做。复选框处于隐藏状态,如果复选框被选中,标签的CSS会被更改。 – musoNic80 2010-03-02 18:42:56

+0

你可能会发布的HTML? – Brett 2010-03-02 19:58:54

回答

1

在点击功能的“这”将被分配到“‘#cal_checkbox _’+ id为”的元素的上下文(我假设,就是要复选框旁边的标签的ID?

hide()简单地将display css propery更新为none。它不会删除DOM中的元素。

如果您使用复选框标签的HTML元素,那么这可能会解释为什么当你隐藏复选框。

你可以发布你的HTML以及JavaScript?