そこにあるすべてのポリフィルを試しました。ie9.js を除いて、どれも機能しませんでした。残念ながら、 ie9.jsによってページの読み込みがピーナッツ バターの中を移動するカタツムリの群れのように遅くなりました。ほぼ 2 日間 (!) のろいをした後、ようやく IE8 のラジオ ボタンの一部を jQuery と CSS で少し操作できるようになりました。
最初の問題は、un-/checked 入力にクラスを追加および削除することでした。2 つ目は、代わりに別のラジオ ボタンがチェックされると、チェックされていない入力を IE8 に強制的に再レンダリングさせることでした。このアプローチは、チェックボックスでも機能すると思います。
jQuery:
// maybe you need this next small line, I didn't
// $('input:checked').addClass("selected");
$('input').change(function () { // click() worked too but change is safer
$(this).addClass("selected");
$('input:not(:checked)').removeClass("selected");
// adding a class to a wrapping element
// and then remove it to force IE8 to rerender
var testClass = "testClass";
$(this).parent().parent().addClass(testClass).removeClass(testClass);
});
そしてCSS:
input[type="radio"] {
// display: none; won't work
// so replace the actual button offscreen
// or cover it with following label
}
input[type="radio"] + label {
background-color: red; // or background-image
}
input[type="radio"].selected + label {
background-color: green; // or background-image
}
input[type="radio"] + label,
input[type="radio"].selected + label {
position: relative;
top: 150px;
left: 300px;
height: 48px;
width: 48px;
display:inline-block;
padding: 0;
text-indent: -9999px;
cursor: pointer;
}