2011-10-05 141 views
0

伙计们, supressed Click事件我有一个包含在它的头一个复选框手风琴面板:的jQuery手风琴

<div id="accordion"> 
    <h3><a href="#"><input type='checkbox' id='chkbox'/>First header</a></h3> 
    <div>First content</div> 
    <h3><a href="#">Second header</a></h3> 
    <div>Second content</div> 
</div> 

现在,当我在点击复选框,通过jQuery的使用event.preventDefault抑制click事件。因此我无法获得复选框状态的改变。我试过下面的招数,但没有运气:

$("#accordion").accordion(); 

$('#chkbox').live('click',function(){ 
    var checkbox = $(this).find(':checkbox'); 
    checkbox.attr('checked', !checkbox.attr('checked')); 

}); 

请帮忙!! 看到代码http://jsfiddle.net/teBfb/1/ 感谢

回答

0

你与

.attr('checked', !$checkbox.attr('checked')); 

做什么应该工作。这意味着你的选择器被破坏。你为什么要在变量名中使用$符号?它可能会混淆jQuery。

+0

即使你删除$,仍然没有工作 – leo

0

您可以使用stopPropagation,以便您的复选框单击事件不会上链。

$("#accordion h3 input").click(function(e) { 
    e.stopPropagation(); 
}); 

http://jsfiddle.net/teBfb/6/

+0

没有luck..not工作 – leo

+0

对不起,我忘了更新我的变化的jsfiddle。在我的帖子中尝试新的。 – flynfish

+0

对不起@flynfish您的解决方案适用于点击事件。但我必须使用现场直播,我的所有复选框都是在飞行中创建的。生活('点击',功能...)不工作... – leo

0
$(function() { 
     $("#accordion").accordion({ 
      collapsible: true, 


     }); 
    }); 



    $("#accordion h3 input").click(function (e) { 

     var checkedStatus = $(this).prop('checked'); 
     e.stopPropagation(); 
     if (checkedStatus) { 


      $("#accordion div div").slideUp(); 

      $(this).parent().next().slideDown(); 
     } 
     else { 


      $("#accordion div div").slideDown(); 

      $(this).parent().next().slideUp(); 

     } 


    }); 

试试这个