0

申し立てられたレンダリング バグは次の場所で確認できます。

http://jsfiddle.net/2FZhW/

<input id="box" type="checkbox">
<button id="chk">Check</button>
<button id="unchk">Uncheck</button>

function check() {
    $("#box").prop("checked", "checked");
}

function uncheck() {
    $("#box").removeProp("checked");
}

$("#chk").click(check);
$("#unchk").click(uncheck);

影響を受けるブラウザには、Chrome 27、Android Froyo、および同僚の iPhone (バージョン?) が含まれます。影響なし: IE9、FireFox 22

影響を受けるブラウザでは、[チェック] ボタンと [チェック解除] ボタンをそれぞれ 1 回クリックすると、動作が停止したように見えます。

見た目にも関わらず、クリックするたびにチェックボックスの状態が正しく設定されているように見えます。この結論に達するために、Chrome デバッガーを使用しました。

jQuery の新しいバージョンは結果に影響を与えないようです。

答えが明らかな場合のために、私は SO と Google で検索するのに時間を費やしました!

前もって感謝します。

4

1 に答える 1

1

あなたremovePropが言及したように、一部のブラウザの要素からチェックされたプロパティを削除してしまう可能性があり、このような問題を引き起こす可能性があります。使用しないでください。

function check() {
    $("#box").prop("checked", true);
}

function uncheck() {
    $("#box").prop("checked", false);
}

デモ

ドキュメントを参照

.removeProp() メソッドは、.prop() メソッドによって設定されたプロパティを削除します。

DOM 要素またはウィンドウ オブジェクトの一部の組み込みプロパティでは、プロパティを削除しようとすると、ブラウザでエラーが発生する場合があります。jQuery は最初に値 undefined をプロパティに割り当て、ブラウザーが生成するエラーを無視します。一般に、組み込み (ネイティブ) プロパティではなく、オブジェクトに設定されているカスタム プロパティのみを削除する必要があります。

注: このメソッドを使用して、checked、disabled、または selected などのネイティブ プロパティを削除しないでください。これにより、プロパティが完全に削除されます。一度削除すると、要素に再度追加することはできません。.prop() を使用して、代わりにこれらのプロパティを false に設定してください。

于 2013-07-09T02:56:48.460 に答える