当“a”出现时,将父样式更改应用于组中的所有复选框;勾选“全部”;javascript函数正在运行

当“a”出现时,将父样式更改应用于组中的所有复选框;勾选“全部”;javascript函数正在运行,javascript,jquery,Javascript,Jquery,当前,我们使用javascript函数在选中父DIV元素中的复选框时更改该元素的颜色。这非常有效,可通过以下方式处理: $("input[type='checkbox']").change(function(){ if($(this).is(":checked")){ $(this).parent().addClass("redBackground"); }else{ $(this).parent().removeClass("redBack

当前,我们使用javascript函数在选中父DIV元素中的复选框时更改该元素的颜色。这非常有效,可通过以下方式处理:

  $("input[type='checkbox']").change(function(){
    if($(this).is(":checked")){
        $(this).parent().addClass("redBackground"); 
    }else{
        $(this).parent().removeClass("redBackground");  
    }
  });
最近,我们添加了一个单独的javascript函数,允许通过选中或取消选中特定组顶部的复选框来选中或取消选中该组中的所有复选框:

function toggleGROUPNAME(source) {
  checkboxes = document.getElementsByName('GROUPNAME');
  for(var i=0, n=checkboxes.length;i<n;i++) {
    checkboxes[i].checked = source.checked;
  }
}
函数toggleGROUPNAME(源代码){
复选框=document.getElementsByName('GROUPNAME');

对于(var i=0,n=checkbox.length;i您可以显式触发更改事件:

$(checkboxes).change();
如果一个组的复选框始终具有相同的父项,则仅为一个复选框触发事件即可:

$(checkboxes[0]).change();
这将遵循您的循环:

function toggleGROUPNAME(source) {
  // don't forget var!!
  var checkboxes = document.getElementsByName('GROUPNAME');
  for(var i=0, n=checkboxes.length;i<n;i++) {
    checkboxes[i].checked = source.checked;
  }
  $(checkboxes).change();
}
函数toggleGROUPNAME(源代码){
//别忘了var!!
var复选框=document.getElementsByName('GROUPNAME');
for(var i=0,n=checkbox.length;i
函数toggleGROUPNAME(源){
复选框=document.getElementsByName('GROUPNAME');
$(“输入[type='checkbox']);

对于(var i=0,n=checkbox.length;它始终会添加类,即使
source.checked
false
。仍然是相同的问题。此外,我认为OP不希望代码重复。IMO
this.checked
$(this.)更干净。is(“:checked”)
.Wow.速度惊人,而且非常准确。复选框有不同的父项,所以$(复选框[i]).change()是我所需要的。再次感谢您…如果允许我在七分钟内这样做,我会将其标记为最佳!在这种情况下,只需使用
$(复选框)。change()
在循环之后,正如我所展示的,您不必单独触发event for ever元素。让jQuery来处理这个问题。
    function toggleGROUPNAME(source) {
      checkboxes = document.getElementsByName('GROUPNAME');
$("input[type='checkbox']").removeClass("redBackground");
      for(var i=0, n=checkboxes.length;i<n;i++) {
        checkboxes[i].checked = source.checked;

    $(checkboxes[i]).parent().addClass("redBackground"); 
      }
    }