You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:jQuery实现单选框点击显示对应Div功能失效

修复jQuery单选框切换显示对应Div的问题

你的代码存在几个关键问题,导致功能失效:

  • 事件绑定错误:你把change事件绑定到input:radio[name=settore]:checked,这个选择器仅会选中页面加载时已勾选的单选框,实际应该绑定到所有name为settore的单选框,才能让点击任意单选框都触发事件。
  • if语句多了分号:每个if(...)后面的分号会让后续的显示代码脱离条件判断,不管条件是否成立都会执行,完全破坏逻辑。
  • 选中值获取错误:$("input[name='settore']").val()会拿到第一个单选框的值,而非当前选中的那个。在change事件里,用$(this).val()才能获取当前触发事件的单选框值。
  • value值不匹配:第一个单选框的value写的是!,但你代码里判断的是'1',两者不匹配,永远触发不了对应显示逻辑。
  • label语法错误:for"animazione"缺少等号,应该是for="animazione",且对应的input需要添加id="animazione",否则点击label不会选中单选框。
  • ID选择器拼写错误:代码里写的是#post-risto,但实际div的ID是pos-risto,多了一个t,导致找不到元素。
  • 缺少隐藏其他div的逻辑:切换单选框时未先隐藏所有相关div,会导致多个div同时显示。

修正后的完整代码:

<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
$(document).ready(function(){
    // 绑定所有name为settore的单选框的change事件
    $('input:radio[name="settore"]').change(function() {
        // 先隐藏所有目标div
        $("#pos-animatore, #pos-risto, #pos-hotel").hide();
        
        // 获取当前选中的单选框的值
        var selectedValue = $(this).val();
        
        // 根据值显示对应div
        if(selectedValue == '1') {
            $("#pos-animatore").show();
        } else if(selectedValue == '2') {
            $("#pos-risto").show();
        } else if(selectedValue == '3') {
            $("#pos-hotel").show();
        }
    });
});
</script>

<body>
<div>
    <input type="radio" name="settore" value="1" id="animazione">
    <label for="animazione">Animazione</label>
    
    <input type="radio" name="settore" value="2" id="lavoro-an-risto">
    <label for="lavoro-an-risto">Ristorante</label>
    
    <input type="radio" name="settore" value="3" id="lavoro-an-hotel">
    <label for="lavoro-an-hotel">Hotel</label>
</div>

<p></p>

<div id="pos-animatore" style="display: none;">
contenuto
</div>

<div id="pos-risto" style="display: none;">
contenuto2
</div>

<div id="pos-hotel" style="display: none;">
contenuto3
</div>
</body>

额外说明:

  • 确保页面引入了jQuery库,原始代码未包含此部分,需补充。
  • 给每个radio添加了唯一id,让label与radio正确关联,提升交互体验。
  • 用else if替代多个独立if,逻辑更严谨,避免不必要的判断。

内容的提问来源于stack exchange,提问作者Fabio Lantier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:50:31