2011-10-05 304 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(); 

     } 


    }); 

試試這個