2

我遇到了奇怪的行为。我有一组复选框输入。以下代码本身可以正常工作。但是,如果在您按下全部按钮时将其集成到网站中,则不会发生任何事情

    $("[name*=group_]").live('click', function(){
        var id = $(this).attr('name').substr(6,1);
        var cnt = $("[value!='all'][name*=group_"+id+"]:checked").length;

        if(cnt > 0){
            $("[value='all'][name*=group_"+id+"]").removeAttr('checked');
        } else {
            $("[value='all'][name*=group_"+id+"]").attr('checked', 'checked');
        }
    })

<fieldset class="subject">


                        <input type="checkbox" value="all" name="group_4" id="group_4"><label title="All" for="all">All</label>
                                            <input type="checkbox" value="15" id="cat_15" name="group_4[]"><label title="Maths" for="cat_15">Maths</label>

                                            <input type="checkbox" value="16" id="cat_16" name="group_4[]"><label title="English" for="cat_16">English</label>

                                            <input type="checkbox" value="14" id="cat_14" name="group_4[]"><label title="Science" for="cat_14">Science</label>

                    </fieldset>

请去那里http://jsfiddle.net/XXQTT/1/并尝试使用Applicability. 当您单击前:Early Years它可以工作,但是如果您单击All- 什么都没有。我想是因为 css 但无法弄清楚如何以及如何使其工作

4

1 回答 1

1

问题是 [value!='all'] - 属性选择器没有!选项。尝试将其替换为$(":not([value='all'])[name*group_"+id+"]:checked")

编辑

根据以下反馈John Travolta

  1. 这对我有用并返回正确的值。2. 没有事件产生的问题。我放了警报,当您单击全部时没有弹出窗口

很公平——你知道的越多!:D All 标签上没有冒泡的事件,经测试:

$('label').click(function() {
    window.alert('hi');
});

$('[type=checkbox]').click(function() {
    window.alert('hello');
});

@edit - 我将其归咎于处理标签/输入点击的脚本,而不是 css,因为以下使其正常工作:

$('label').click(function() {
    $(this).prev("input:first").click();
});
于 2012-12-14T10:46:46.190 回答