Jquery通过部分名称获取类名

时间:2013-01-30 11:36:33

标签: jquery

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

所以我将从:

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

因此,当点击主人时,我想选择所有相关的奴隶并检查它们。但是如何?

由于

2 个答案:

答案 0 :(得分: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);

请参阅Setting "checked" for a checkbox with jQuery?

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

 $(this).//chain to select slaves
        .prop('checked', true)

答案 1 :(得分: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等),检查所有带有这个号码的从站(slave14)。 考虑到这个类可能包含多个类,例如class =“class1 class2 master14”,我只是不知道如何从中获取数字。

由于