私は次の問題を修正するために約2時間グーグルしてきました(他のStackoverflowの質問が含まれています):
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('input[type="radio"]').unbind('click.preset')
.bind('click.preset', function() {
doingStuffWith(jQuery(this).val());
});
});
</script>
<input type="radio" name="lightType" value="led" />
<input type="radio" name="lightType" value="tube" />
ご覧のとおり、ラジオボタングループ「lightType」の現在の値を取得して操作しようとしています。これはFirefox/Safari / Chromeの魅力のように機能しますが、IE8は空の文字列を返すだけで苦労しています。
変更イベントをラジオボタンにバインドしたり、クリックしたラジオボタンをぼかしてIE8に強制的に起動させたりするなど、他の質問からいくつかのハックをすでに試しました。たぶん、今は失明に苦しんでいます。
私は最新のjQueryバージョンで作業しており、他のバインドされたイベントが干渉しないことを確認しました。興味深いことに、値を取得する前にalert()を追加すると、IEは現在の値を返します。
....
// DOES WORK
alert();
alert(jQuery(this).val()); // alerts e.g. "tube"
// DOESN'T WORK
alert(jQuery(this).val()); // alerts ""
タイミングの問題かもしれないと思いましたが、setTimeoutを使用して単一のアラート呼び出しを遅らせようとしても役に立ちませんでした。
事前のおかげで、私はただ盲目で、IE8で別の醜い振る舞いを見つけられなかったことを願っています。