別のクリックイベントによってトリガーされたときにラジオボタンが選択される前に、ラジオ入力のクリックイベントにバインドされた関数が起動するという奇妙な問題があります。そのようにすると少し混乱するように聞こえるので、コードを見てみましょう。
<div class="side">
<input type="radio" id="100" value="100" name="radiogroup" style="display:none;" />
<label for="100">
<img src="" />
<span>Description</span>
</label>
</div>
ほとんどのブラウザは、ラジオ入力の選択をトリガーするためのラベルのクリックをサポートしていますが、もちろんIEはサポートしていません。このため、HTMLで条件付きクラスを使用しています。
<!--[if IE 8]><html class="no-js lt-ie9 ie8" lang="en" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
これにより、IE固有のJavaScriptを簡単に作成できます。この場合、ラベルがクリックされたときのラジオ入力のクリックをシミュレートする必要があります。これは次のようになります。
$(".lt-ie9 .side label").bind("click", function() {
$(this).siblings("input").click();
});
この時点まではすべて正常に機能します。次のように、ラジオ入力がクリックされたときにAJAX呼び出しを挿入しようとすると、問題が発生します。
$("input[name=radiogroup]").bind("click", function() {
//some ajax call referencing which radio option is selected.
});
私が抱えている問題は、ラジオ入力が実際に最新の選択に切り替えられる前に、ajaxメソッドが起動されることです。たとえば、ID /値が「100」、「101」、「102」などの複数の無線入力がある場合。100をクリックしてから101をクリックすると、ajax呼び出しは次の値を使用します。最近クリックされた101の値ではなく100。なぜこれが起こっているのか誰か知っていますか?最新のラジオボタンがチェックされるまで、ajaxメソッドを呼び出さないように思われます。これがすべて理にかなっていることを願っています。