我有一个奇怪的问题,即在另一个单击事件触发单选按钮被选中之前,一个函数绑定到单选输入上的单击事件触发。听起来有点混乱,所以这里看一下代码:
<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 调用使用的值100 而不是最近点击的值 101。有人知道为什么会这样吗?在我看来,在选中最新的单选按钮之前不应调用 ajax 方法。希望这一切都有意义。