【问题标题】:Make div appear (or disappear) on checkbox status使 div 在复选框状态上出现(或消失)
【发布时间】:2014-03-06 20:58:01
【问题描述】:

我有这个 jQuery 代码:

$(document).ready(function(){
    $('.checkdisplay').change(function(){
        if(this.checked)
            $('.todisplay').fadeIn('slow');
        else
            $('.todisplay').fadeOut('slow');

    });
});

仅当我选中 .checkdisplay 单选按钮时才有效:div 出现,但之后,如果我取消选中 .checkdisplay 单选按钮,div .todisplay 不会消失。

我哪里错了? :(

编辑:

演示:http://jsfiddle.net/Mse2L/

【问题讨论】:

  • 能否请您在jsfiddle中添加完整的代码。?
  • 您是否包含任何版本的jquery
  • This 工作得很好。你的 HTML 是什么?

标签: javascript jquery html checkbox radio-button


【解决方案1】:

您需要测试所有的收音机,并且只在具有正确类的那一台上显示

你也可以使用 ID

注意我使用.on("click",因为在某些浏览器中更改需要模糊

Live Demo

$(function(){
  $("input[name='roomdoor']").on("click",function(){
    if ($(this).hasClass("checkdisplay") && this.checked)
        $('.todisplay').fadeIn('slow');
    else
        $('.todisplay').fadeOut('slow');
  });
});

【讨论】:

  • 我已经测试了你的现场演示:当我取消选中单选按钮时,div 不会消失。
  • 现在当然可以了 :)
【解决方案2】:
$(document).ready(function () {
    $('.radio').change(function () {
        if ($(this).hasClass('checkdisplay') && this.checked) $('.todisplay').fadeIn('slow');
        else $('.todisplay').fadeOut('slow');
    });
});

Demo

问题是,您不能取消选中单选按钮。

【讨论】:

  • @MattiaDelFranco 取消选中该框会怎样?
  • 这会将事件添加到页面上的所有输入字段中,而不是测试检查的实际按钮,而是依赖于检查带有类的按钮的副作用。不是很优雅。如果他更改了 type=text 并且选中了收音机,jQuery 将尝试再次淡入它
  • @mplungjan 请查看我的答案的更新,现在它检查类型
  • 现在绑定到 .radio 的类上,没有任何理由检查类型了。
  • @mplungjan ...好的,已删除,所以它基本上是我答案的第一个版本...(我的第一个答案是我提供了错误的 JSFiddle)
【解决方案3】:

问题是你的radio按钮,你应该使用checkboxlike,

一旦radio button 具有类checkdisplaychecked 那么它将是checked,它怎么可能是unchecked

<input type='checkbox' class='checkdisplay' />
<div class='todisplay'>test</div>

Demo

更新了,试试这个,

$(document).ready(function(){
    $('.radio').change(function(){// add onchange on radio class
        // check the radio has checkdisplay class or not
        if($(this).hasClass('checkdisplay') && this.checked)
            $('.todisplay').fadeIn('slow');
        else
            $('.todisplay').fadeOut('slow');
    });
});

Working demo

【讨论】:

  • 我不能使用复选框类型,我需要单选按钮。
  • @MattiaDelFranco 查看我的更新答案和工作演示
【解决方案4】:
$('.checkdisplay').click(function() {
    if( $(this).is(':checked')) {
        $(".todisplay").fadeIn('slow');
    } else {
        $(".todisplay").fadeOut('slow');
    }
});

【讨论】:

  • 一些解释可能会有所帮助!
  • 也不允许淡出
猜你喜欢
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 2020-02-29
  • 2011-09-03
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多