【问题标题】:Loop through HTML checkboxes using jQuery使用 jQuery 循环遍历 HTML 复选框
【发布时间】:2010-11-25 22:06:44
【问题描述】:

我正在尝试使用 jQuery 编写执行以下操作的内容。

当您单击某个段落时,它会检查复选框是否被选中(选中),是否等待 x 时间量并选中下一个复选框,依此类推。

我得到的最接近的(不多,抱歉)you can see it here

在此示例中,您必须为每个检查单击一次,我不想要这个。

当你点击<p>时我需要它:

  • 检查,
  • 变化,
  • 检查,
  • 变化(等等)

如果可以循环,那就更好了。

先多谢了,希望够清楚,如果没有,请追问!

编辑:正如@James所说,基本上我想要的是想要

不断循环 复选框选中和取消选中 他们

【问题讨论】:

  • 你的意思是自动,在计时器上,还是你如何拥有它?
  • 不,应该是点击触发,但是每个新的“检查复选框是否被选中”之间的计时器,这清楚吗?谢谢你的提问。

标签: jquery html loops checkbox


【解决方案1】:

你的意思是这样的吗?

$('p').click(function() {
    $(':checkbox').each(function(i) {
        var current = $(this);
        setTimeout(function() { current.attr('checked', !current.attr('checked'))}, i*500);
    });
});

在这里更新了 jsFiddle:http://www.jsfiddle.net/jXHTJ/2/

更新:更改每次点击的顺序(根据 cmets 中的要求),以便按顺序选中/取消选中复选框 {1,2,3} 然后 {2,3,1} 然后 {3,1 ,2},可以使用如下代码:

(function() {
    var startWith = 0;
    $('p').click(function() {
        var checkboxes = $(':checkbox');
        var numCheckboxes = checkboxes.length;
        checkboxes.each(function(i) {
            var current = $(this);
            var delay = (i + startWith) % numCheckboxes;
            setTimeout(function() { current.attr('checked', !current.attr('checked'))}, delay*500);
        });
        startWith = ++startWith % numCheckboxes;
    });
})();

请注意,我将代码封装在我立即执行的匿名函数中,这样我就不会用 startWith 变量污染全局命名空间。更新的 jsFiddle 在这里:http://www.jsfiddle.net/jXHTJ/3/

【讨论】:

  • 看起来不错!!我会看看我是否可以根据我的实际代码调整它,非常感谢!
  • @James 非常感谢你,但你能想办法让它像 1, 2 ,3 ,1 ,2 3.. 等那样循环吗?我无法解决这个问题,谢谢!
  • 詹姆斯,非常感谢你,我不想再打扰你了,你给我的指导已经够多了,但我实际上只提到了一个可点击的段落,当你点击它时通过这样的复选框:取消选择第一个,选择第二个,取消选择第二个,选择第三个,取消选择第三个,选择第一个然后循环再次开始......我真的很感激!
  • 所以你想不断地循环检查复选框以选中和取消选中它们吗?如果是这样,您可以使用 setInterval() 而不是 setTimeout()。
  • 哦,有意思,我试试看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2016-06-20
  • 2021-06-20
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多