【问题标题】:checkbox is not checked through each() when I click it当我单击复选框时,未通过 each() 检查复选框
【发布时间】:2013-12-16 21:07:52
【问题描述】:

我在这里检查了很多关于 .prop() 属性的问题,但没有任何收获。我有如下输入:

<input type="checkbox" name="chk_ignore_few[]" class="chk_ignore_few">

还有一个如下:

<input type="checkbox" name="chk_ignore_all" id="chk_ignore_all">

这是我的代码:

$('#chk_ignore_all').click(function() {
    $('.chk_ignore_few').each(function(){
        $(this).attr('checked', 'checked');
    });
});

我用萤火虫检查了它,发现它循环通过不同的复选框,但它根本不检查它们。我上面的问题是什么?

                      =============**EDIT**=====================  

问题是在项目中使用了 jQuery UI,而我没有意识到这一点。实际的复选框隐藏在图片后面,复选框的不透明度为 0。有没有办法在 jQuery UI 中触发检查?

【问题讨论】:

  • 尝试:$('.chk_ignore_few').prop('checked', true); 不使用无用的 each() 循环。并且您不希望使用 onchange 事件而不是 onclick 然后检查元素 #chk_ignore_all 是否已检查?
  • 请提供一个 jsfiddle,我不知道 jquery UI 会如何与任何本机复选框元素进行不良交互
  • 使用了 jQuery 统一。为了解决这个问题,我只是在所有复选框中添加了 no-data-uniform="true" ,现在一切都很好。

标签: jquery select checkbox


【解决方案1】:

使用prop(),不要使用attr(),你不需要each()

$('.chk_ignore_few').prop('checked', true);

【讨论】:

    【解决方案2】:

    prop()代替attr()也不需要像each()一样,

    $('#chk_ignore_all').click(function() {
        $('.chk_ignore_few').prop('checked', this.checked);
    });
    

    Working Demo

    【讨论】:

    • 我会改用更改事件,更好地处理可以在点击事件后设置复选框状态的旧浏览器
    • 什么旧浏览器?我只使用过点击,因为在许多旧浏览器中更改需要模糊
    【解决方案3】:

    试试这个 jsfiddle..http://jsfiddle.net/ArH5A/2/

    我已经更新了我的小提琴,您可能想在取消选中 #chk_ignore_few 时取消选中 .chk_ignore_few

    $(document).on("change", "#chk_ignore_all", function() {
    if($(this).is(":checked"))
    {
        $('.chk_ignore_few').each(function(k,fewChk){
          $(fewChk).prop('checked', true);
        });
    }
    else
    {
        $('.chk_ignore_few').each(function(k,fewChk){
          $(fewChk).prop('checked', false);
        });
    }
    

    });

    【讨论】:

    • 没有成功!我将其复制并粘贴到我的代码中。什么都没发生!
    • @phpGeek 只是想知道,至少在您的网站上触发了点击事件吗?您是否在设置处理程序之前等待元素在 DOM 中?
    • 我建议 $(document).on 而不是将事件绑定到复选框
    • 点击发生。我可以用萤火虫看到它。带断点。
    • @phpGeek 所以在 jsfiddle 中重现你的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多