所以我需要在选项卡标签旁边的jquery选项卡中使用单选按钮。当用户单击选项卡上的任何位置时,一切正常,除非用户直接单击单选按钮本身。选项卡更改,但单选按钮不会。
这是fiddle。
如果单击文本,选项卡会更改,收音机也会更改,但是您直接单击单选按钮,选项卡会更改,但收音机不会。
我似乎无法让它发挥作用。
这是我最近尝试让它发挥作用
$("#tabs > ul > li > a > label > input").on('click',function(){
var actualRadio = $("[name=biosafetyLevel]:checked").attr('id');
$('input:radio[name=biosafetyLevel]').each(function () {
$(this).prop('checked', false)
});
$("#" + actualRadio).prop('checked', true);
});
这似乎无能为力。
答案 0 :(得分:0)
你的问题是,当你点击输入本身时,检查属性的应用速度比你的javascript更快。我发现的唯一方法是提供这样的完整功能:
$("#tabs > ul > li > a").on('click',function() {
var curTab = $(this).attr('id');
var curRadio = $("input[type='radio']:checked");
curRadio.prop("checked", false);
$("#" + curTab + "> label > input").prop('checked', true);
},function(){
$(this).prop('checked', true);
});
function(){$(this).prop(' checked',true); });最后确保如果有人点击输入本身,最终会被点击,如果有人点击" a" DOM元素,这个东西不会工作因为" a"没有托运财产。
这是小提琴:
答案 1 :(得分:-1)
1. $.each()
传递2个参数,第一个是索引,第二个是元素。
$('input:radio[name=biosafetyLevel]').each(function (i, item) {
$(item).attr('checked', '')
});
$("#" + actualRadio).attr('checked', 'checked');
2.你根本不需要迭代
$('input:radio[name=biosafetyLevel]').attr('checked', '');
$("#" + actualRadio).attr('checked', 'checked');
将完全相同。