Jquery Accordian 抑制点击事件

发布于 2024-12-08 11:11:09 字数 749 浏览 0 评论 0原文

各位, 我有手风琴面板,其标题中包含一个复选框:

 <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 抑制单击事件。因此我无法更改复选框状态。我尝试了以下技巧但没有成功:

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

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

});

请帮助! 请参阅代码 http://jsfiddle.net/teBfb/1/ 谢谢

Folks,
I have accordian panel which contains a checkbox in its header :

 <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>

now when i click on checkbox, the click event is suppressed by jquery using event.preventDefault. Consequently I can not get checkbox state changed. I tried following trick but no luck:

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

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

});

Please help!!
see the code http://jsfiddle.net/teBfb/1/
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你在我安 2024-12-15 11:11:09

你正在做的事情

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

应该有效。这意味着您的选择器已损坏。为什么在变量名中使用 $ 符号?它可能会让 jQuery 感到困惑。

What you are doing with

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

should work. Which means your selector is busted. Any reason why you're using $ signs in variable names? It might confuse jQuery.

赴月观长安 2024-12-15 11:11:09

您可以使用 stopPropagation 这样您的复选框单击事件就不会沿着链向上移动。

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

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

You could use stopPropagation so your checkbox click event doesn't go up the chain.

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

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

我做我的改变 2024-12-15 11:11:09
   $(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();

       }


    });

试试这个

   $(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();

       }


    });

try this

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文