javascript - 如果单选按钮是 (':checked' ) - 无法正常工作

标签 javascript jquery html input radio-button

我有一个 JavaScript 代码,用于在选中单选按钮时显示一个字段。该代码运行完美,但是当我取消选中 radio 时,该字段不会隐藏。它还显示 <span>当单选按钮被选中时,但当它被取消选中时,跨度也不会隐藏..

<script>
$(function() {
    $('#radiopromo2').live('change', function() {
        if($(this).is(':checked')) {
            $("#fieldtraining").show();
            $("#radio3").show();
        } else {
            $("#fieldtraining").hide();
            $("#radio3").hide();
        }
    }).trigger('change');
});
</script>

谁能帮帮我?我做了一个jsfiddle http://jsfiddle.net/4UH2H/8/

最佳答案

尝试使用更合适的.prop() :

if($(this).prop('checked')){

或者甚至是普通的旧 Javascript(它更快):

if(this.checked){

这对我来说总是有效。此外,.live() 已被弃用,取而代之的是 .on(),对于单选按钮,最好使用 click 而不是 change 因为较旧的 webkit 版本错误无法正确识别 onchange:

$('#radiopromo2').on('click',function(){

有了这些改变,你应该会变得很优秀。

编辑 基于jsFiddle here ,您的事件没有使用正确的选择器触发。以下是更新的内容:

$('input[name="radiotraining"]').on('click', function () {
    if ($('#radiopromo2').prop('checked')) {
        $("#fieldtraining").show();
        $("#radio3").show();
    } else {
        $("#fieldtraining").hide();
        $("#radio3").hide();
    }
});

它有效!耶!虽然看看你的 jsFiddle,你确实应该考虑使用 CSS 而不是 jQuery 来实现这种基本的显示/隐藏内容:

#fieldtraining,#radio3 {
    display:none;
}

#radiopromo2:checked + #radio2 > #radio3 {
    display:inline;
}

#radiopromo2:checked ~ #fieldtraining {
    display:block;
}

可以在 IE9+ 和所有真正的浏览器上完美工作(是的 CSS3!),比 JS 快得多,甚至当白发人在浏览器上关闭 JS 时也可以工作。您可以为那些蹩脚的旧浏览器(如 IE6)保存 jQuery。 Here is the jsFiddle来表达我的意思。

关于javascript - 如果单选按钮是 (':checked' ) - 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15572401/

相关文章:

html - CSS 悬停效果适用于除 h4 以外的所有内容

javascript - 选中复选框时更改输入字段的内容

javascript - 如何在jQuery中获取评分值?

javascript - Selenium:如何检查匿名函数的代码

javascript - 双线性缩放算法奇怪的效果

javascript - 无法使用 jquery 禁用文本框

javascript - 使用 Javascript 计算 <ul> 高度

javascript - 更改并显示 url 的主机名

javascript - 在 node-mysql 中选择 WHERE IN

jquery - 如何在没有 API key 的情况下在 jQuery 中获取 Google Plus 分享计数?