2

HTML:

<input type="checkbox" />
<span id="test">Click here</span>

JS:

$("#test").click(function () {
    if ($(":checkbox").attr("checked") == undefined) {
        $(":checkbox").attr("checked", "checked")
    } else {
        $(":checkbox").removeAttr("checked")
    }
});

フィドル:リンク - v1.8.3

これは問題なく動作しますが、jquery のバージョンを 1.9.1 に変更すると、チェックボックスがチェックされなくなります。どうした?

フィドル:リンク - v.1.9.1

inspect elementチェックボックスが属性を切り替えていることを示していますが、コンソールで a を実行すると$(":checkbox").is(":checked")false出力として取得されます

4

3 に答える 3

5

checkedはプロパティです。メソッドを使用する必要があります。またはpropのようなブール属性が要素に設定されている場合、値は要素の関連する DOM プロパティにマップされ ( browser do this ) 、メソッドは要素のプロパティを変更しません。プロパティを変更するための jQuery 1.6 の時点では、 の代わりにメソッドを使用する必要があります。disabledcheckedattrremoveAttrpropattr

$("#test").click(function () {
    $('input[type=checkbox]').prop('checked', function(i, state){
        return !state;
    });
});

http://jsfiddle.net/3rQvj/

于 2013-04-07T09:15:05.233 に答える
0

なぜラベルを使わないのですか?そうすれば、JavaScriptなしで機能します。

<input type="checkbox" id="test" /><label for="test">Click me</label>
于 2013-04-07T09:19:24.550 に答える