3

您好,我正在制作一个脚本来检查与主复选框相关的所有从复选框。这将使用类来完成。所以主复选框将具有“master1”、“master2”等类。相关的从复选框将具有“slave1”类(与 master1 相关)、“slave2”(与 master2 相关)等。

所以我将从:

jQuery('.checks_div input[type="checkbox"].^="master"').click(function(){

因此,当单击主节点时,我想选择所有相关的从节点并检查它们。但是怎么做?

谢谢

4

2 回答 2

3
$('input[type="checkbox"][class^="master"]').on("click",function(){})

但委派更好

$(document.body).on('click','input[type="checkbox"][class^="master"]',function(){})

然后在点击功能中&如果你的奴隶在与主复选框相邻的 div 中

var $slaves=$(this).next().find('input[type="checkbox"][class*="slave"]')

如果 html 不同,那么就想办法从刚刚选中的 $(this) 中选择那些奴隶

一旦你的奴隶在一个 jquery 对象中,检查他们:

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

请参阅使用 jQuery 为复选框设置“已选中”?

如果你除了检查它们什么都不做,你甚至不需要在 jquery 对象中缓存你的奴隶

 $(this).//chain to select slaves
        .prop('checked', true)
于 2013-01-30T11:41:23.243 回答
0

好吧,这是我来的代码:

$(document.body).on('click','input[type="checkbox"][class^="master"]',function(){
  var slaves = $(this).next('label').next('div.slaves').find('input[type="checkbox"][class*="slave"]');
  var master = $(this);
  $(slaves).attr('checked', $(this).is(':checked'));
});

这很好用。虽然我在 jquery 1.9.0 及更高版本中发现了一个错误。在这里:http: //jsfiddle.net/x3NpL/

1.8.3 工作正常,如果你走得更高,它将工作两次并停止工作.. 很奇怪。顺便说一句,如果使用 $(slaves).click() 则不会发生这种情况,但 click() 没有所需的结果。

无论如何,我使用的解决方案是添加一个 div 来包含相关的奴隶,但我仍然想知道如何在没有 div 的情况下做到这一点。这个想法很简单:点击master,获取它的类号(master14 - number 14 etc..),检查所有具有这个数字的slave(slave14)。我只是不知道如何从中获取数字,考虑到该班级可能拥有多个班级,例如 class="class1 class2 master14" ..

谢谢

于 2013-01-30T22:03:03.787 回答