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。ex: をクリックするEarly Yearsと機能しますが、クリックしてAllも何もありません。cssが原因だと思いますが、それを機能させる方法と方法がわかりません

4

1 に答える 1

1

問題は [value!='all'] です - 属性セレクターには ! がありません。オプション。で置き換えてみてください$(":not([value='all'])[name*group_"+id+"]:checked")

編集

からのフィードバックに基づくJohn Travolta:

  1. これは私にとってはうまくいき、正しい値を返します。2. イベントが生成されない問題。アラートを設定しましたが、[すべて] をクリックしてもポップアップが表示されませんでした

十分に公平です - より多くのことを知ってください!:D 以下でテストしたように、すべてのラベルにイベントのバブリングはありません:

$('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 に答える