在jQuery选项卡中单击时,单选按钮不会更改

时间:2014-07-09 15:17:24

标签: javascript jquery html tabs

所以我需要在选项卡标签旁边的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);
});

这似乎无能为力。

2 个答案:

答案 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"没有托运财产。

这是小提琴:

http://jsfiddle.net/9dS8a/30/

答案 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');

将完全相同。