1

jQuery の興味深い動作を見ましたが、理由はわかりません。「修正」したため、実際には問題ではありませんが、これをあなたと共有したいので、コードを見てください。

            switch(id){
            case "1k":
                check5k.attr('checked', false);
                check10k.attr('checked', false);
                check1k.attr('checked', true);
                image1k.attr('class', 'radio-checked1k');
                image5k.attr('class', 'radio5k');
                image10k.attr('class', 'radio10k');
                break;
            case "5k":
                check1k.attr('checked', false);
                check10k.attr('checked', false);
                check5k.attr('checked', true);
                image1k.attr('class', 'radio1k');
                image5k.attr('class', 'radio-checked5k');
                image10k.attr('class', 'radio10k');
                break;
            case "10k":
                check1k.attr('checked', false);
                check5k.attr('checked', false);
                check10k.attr('checked', true);
                image1k.attr('class', 'radio1k');
                image5k.attr('class', 'radio5k');
                image10k.attr('class', 'radio-checked10k');
                break;
        }

だから、私がしようとするとalert($("input:checked").val())、それは私に現在選択されているラジオの値を表示しますが、私がこれを好きなら:

            switch(id){
            case "1k":
                check1k.attr('checked', true);
                check5k.attr('checked', false);
                check10k.attr('checked', false);
                image1k.attr('class', 'radio-checked1k');
                image5k.attr('class', 'radio5k');
                image10k.attr('class', 'radio10k');
                break;
            case "5k":
                check1k.attr('checked', false);
                check5k.attr('checked', true);
                check10k.attr('checked', false);
                image1k.attr('class', 'radio1k');
                image5k.attr('class', 'radio-checked5k');
                image10k.attr('class', 'radio10k');
                break;
            case "10k":
                check1k.attr('checked', false);
                check5k.attr('checked', false);
                check10k.attr('checked', true);
                image1k.attr('class', 'radio1k');
                image5k.attr('class', 'radio5k');
                image10k.attr('class', 'radio-checked10k');
                break;
        }

そしてalert($("input:checked").val())、10k id の値のみを表示し、他の値は未定義で表示されるようにします。10k は、この場合に true に設定された最後の値であるため、値を示しています。

なぜそれが起こるのですか?

4

1 に答える 1

0

チェックされた属性を間違って設定しています。jQuery.attr('checked', 'checked')では、.removeAttr('checked')設定と設定解除を行います。*

*jQuery 1.6 より前。1.6 以降では、propを使用します。

于 2012-11-22T14:40:53.363 に答える