最近、職場でjqueryを使用してチェックボックスを操作し、次のメソッドを使用してすべてを選択し、選択を反転します:
var ischecked=allCheckObj.is(':checked');
ischecked?checksObj.attr('checked',true):checksObj.attr(' selected',false);
デバッグ中はIEでは問題なかったのですが、互換性を考慮してFirefoxを試してみると問題が発生しました。そこで、次の実験を行いました。
チェック ボックスは、1 回クリックして選択し、もう一度クリックしてチェックを外すなどのクリック イベントにバインドされています。この機能は IE では問題なく動作しますが、Firefox でテストしたところ、最初の 2 回は問題なく選択と解除が正常に表示されましたが、再度チェックボックスを選択すると、チェックボックスの属性値が に変わります。 「チェック済み」ですが、チェックボックスに選択状態が表示されなくなりました。明らかに属性値が変更されていますが、チェックボックスが表示されません。コードを修正しましたが、正しい表示状態を取得できず、長い間苦労しましたが、原因がわかりませんでした。
正解:後日、アイドルさんに指摘されて、jQueryのバージョンの問題であることが判明しました。私は
$("**").attr("attrName"); を使用していますが、jQuery のバージョンは 1.9 なので、互換性と安定性に問題があります。
jQuery API は、jQuery 1.6 が prop を使用する必要があることを明確に示しています。特に checkBox のチェックされた属性を判断するために、つまり、
$("input[type='checkbox']").prop("checked");
$("input[type=' checkbox']" ).prop("disabled", false);
$("input[type='checkbox']").prop("checked", true);
Change attr to prop を使用するときに使用され、問題は解決されます。
この奇妙な問題に遭遇したことがありますか?早速試してみます